File size: 2,181 Bytes
69f2337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a08f988
 
 
 
 
69f2337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent.parent
DATA_DIR = BASE_DIR / "data"
TABLE_PARTICIPANTS = "participants"
TABLE_TOPICS = "topics"
TABLE_MESSAGES = "messages"

PARTICIPANTS_FILE = DATA_DIR / "participants.txt"
TOPICS_FILE = DATA_DIR / "topics.txt"
MESSAGES_FILE = DATA_DIR / "messages.txt"

PARTICIPANT_SEPARATOR = "|"
PARTICIPANT_EXPECTED_PARTS = 6

TOPIC_SEPARATOR = "|"
TOPIC_EXPECTED_PARTS = 6
TOPIC_LIST_SEPARATOR = ";"
TOPIC_INNER_SEPARATOR = ","
TOPIC_MESSAGE_PART_SEPARATOR = "^"

MESSAGE_SEPARATOR = "|"
MESSAGE_EXPECTED_PARTS = 6

ENCODING_UTF8 = "utf-8"
ENCODING_ASCII = "ascii"
NEWLINE = "\n"
ALPHABET = (
    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "0123456789"
    r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ """
)

NAME_MIN_LENGTH = 1
NAME_MAX_LENGTH = 100
RATING_MIN_VALUE = 0

TOPIC_TITLE_MIN_LENGTH = 1
TOPIC_TITLE_MAX_LENGTH = 200
TOPIC_DESCRIPTION_MIN_LENGTH = 1
TOPIC_DESCRIPTION_MAX_LENGTH = 1000
TOPIC_MESSAGE_MIN_LENGTH = 1
TOPIC_MESSAGE_MAX_LENGTH = 2000

PARTICIPANT_PARSE_EMPTY_ERROR = "Cannot parse empty participant line"
PARTICIPANT_PARSE_INVALID_ERROR = "Invalid participant line format"
TOPIC_PARSE_EMPTY_ERROR = "Cannot parse empty topic line"
TOPIC_PARSE_INVALID_ERROR = "Invalid topic line format"
MESSAGE_PARSE_EMPTY_ERROR = "Cannot parse empty message line"
MESSAGE_PARSE_INVALID_ERROR = "Invalid message line format"

PARTICIPANT_NOT_FOUND_MESSAGE = "Participant not found"
TOPIC_NOT_FOUND_MESSAGE = "Topic not found"
MESSAGE_NOT_FOUND_MESSAGE = "Message not found"
UNKNOWN_PARTICIPANT_NAME = "Unknown participant"
UNKNOWN_TOPIC_TITLE = "Unknown topic"

APP_TITLE = "Forum Storage API"
PARTICIPANTS_ROUTE_PREFIX = "/participants"
TOPICS_ROUTE_PREFIX = "/topics"
MESSAGES_ROUTE_PREFIX = "/messages"
PARTICIPANTS_TAG = "participants"
TOPICS_TAG = "topics"
MESSAGES_TAG = "messages"

HTTP_STATUS_CREATED = 201

FORBIDDEN_WORDS = ["spam", "hate", "violence", "abuse", "illegal"]
FORBIDDEN_WORDS_MESSAGE = "Message contains forbidden words"

DATA_DIR.mkdir(parents=True, exist_ok=True)
PARTICIPANTS_FILE.touch(exist_ok=True)
TOPICS_FILE.touch(exist_ok=True)
MESSAGES_FILE.touch(exist_ok=True)