см. task/
- Можно сгенрировать начальную базу данных, использую start_scripts/init_script.py, задав начальный список тем, или можно воспользоваться уже готовой базой данных start_scripts/base.db, в которой есть 9 базовых тем
- Надо настроить файл data/config.py
get_path - надо прописать путь до базы данных
bump_limit - после скольки постов тред перестанет всплывать вверх
max_post - сколько символов может быть в посте
thread_per_page - сколько тредов будет на странице
root_name - github логин администратора форума - Создание и конфигурация файла tokens.py, который содержит client_id и client_secret от github oAuth
get_clinet_id() - возвращет client_id
get_client_secret() - возвращает client_secret - После настроек можно запустить main.py, чтобы развернуть сервер локально, ну либо воспользоваться другим севреным решением, таким как wsgi-приложение, но тут уже будет всё индивидуально
getAPI
- api/themes - возвращает список всех тем, доступных на форуме
{"themes": ["Спорт", "Музыка"]} - api/themes/<current_theme> - возвращет список тредов, которые были созданы в теме current_theme
Информация о треде содержит в себе id треда, login его создателя, заголовок треда, количество постов в треда, время и дату создания треда
{"theme": "Спорт", "threads": [{"id":3,"login":"name","post_body":"sample text","post_count":5,"time":"2022-12-22 21:01:29.756834"}]} - api/thread/<thread_id> - возвращает списко постов, которые есть в треде с id thread_id
Информация о посте содержит в себе id поста, login его создателя, текст поста, время и дата создания поста, и тред, в котором был создан пост
{"posts":[{"id":1,"login":"name","post_body":"sample text","post_time":"2022-12-22 18:39:47.223987"}],"thread_id":"1"}
postAPI - работает через github oAuth, т.е. выложить что-либо можно отправив login github и токен, который выдаст система после прохождения регистрации, причём токен меняется при каждой новой авторизации
- api/new_thread - добавляет новый тред в базу данных
Надо отпарвить четыре аргумента - login, token из системы oAuth, theme - тему, в которой выкладывается тред, post_body - сам текст поста
Выложить через это API тред могут все зарегистрированные пользователи - api/new_post - добавляет новый пост в тред
Надо отпарвить четыре аргумента - login, token из системы oAuth, thread_id - id треда, в которой выкладывается пост, post_body - сам текст поста
Выложить через это API пост могут все зарегистрированные пользователи - api/new_theme - добавляет новую тему
Надо отпарвить три аргумента - login, token из системы oAuth, theme - название темы
Работает только для администраторов
deleteAPI - работает через github oAuth, т.е. удалить что-либо можно отправив login и токен, который выдаст система после прохождения регистрации, причём токен меняется при каждой новой авторизации
- api/del_post - изменяет текст поста на значение "deleted"
Надо отправить три аргумента - login, token из системы oAuth, post_id - id того поста, который мы хотим затереть
Работает только для администраторов - api/del_thread - удаляет тред и все написанные в нём посты
Надо отправить три аргумента - login, token из системы oAuth, thread_id - id того треда, который мы хотим удалить
Работает только для администраторов - api/del_theme - удаляет тему, все написанный в теме треды и посты Надо отправить три аргумента - login, token из системы oAuth, theme - название темы, которую мы хотим удалить
Немного о github oAuth
К форуму призязано github oAuth приложение со своими секретными токенами и ключами
Пользователь переходит по ссылке, сгенирированной гитхабом, получает токен доступа, который отправляется на сервер форума через api/auth
Сервер форума в свою очередь отправляет заранее полученные от приложения секретные токеты + токен доступа на сервера гитхаба, который генерирует окочательный уникальный токен, который
возвращается на сервер форума
Сервер форума отправляет этот токен пользователю, который прошёл регистрацию, и предъявив свой логин и этот токен, пользователь докажет, что он и есть владелец данного аккаунта.
Уникальный токен и логин будут записаны в базу данных, и по приходу запроса по API с этими логином и токеном, мы сможем понять, зарегистрованный ли это пользователь
Если токен и логин совпадают, то значит это реальный пользователь, если же нет, то это значит, что это не зарегистрованный пользователь и в доступе к серверу по API ему будет отказано