Custom протокол Viz-projects: подробности из кода
Здравствуйте. Для начала ссылка: https://dpos.space/viz/projects и Github dpos.space и viz-apps.
Добавление проектов и задач стоит 100 VIZ. Это и антиспам и плата за модерацию, т.е. если кто-то заплатит за то, что не является проектом, я удалять буду.
Вместо меня можете быть вы: просто запустите копию viz-apps или скопируйте код, касающийся viz-projects, создайте скрипт и рекламируйте свой шлюз. Либо парсите custom по блокам, добавляя всё подряд (как пожелаете).
Для теста добавил dpos.space и две задачи. Также были повторяющиеся custom, т.к. не с первого раза получалось (были проблемы в новостях и с чем-то ещё).
Из файла js_modules/viz_projects.js репозитория viz-apps
- Функция-обработчик transfer операции, которая выполняется, если логин шлюза совпадает с логином в конфиге (config.json в корне viz-apps), а также если сумма равна сумме из того-же конфига (установлено 100.000 VIZ):
project - добавление проекта:["project",{name, description, image_link, type, category, dev_status, command, site, github}]
.
task - добавление задачи:["task",{name, description, mambers, status}]
. - Функция-обработчик custom операции:
["update_project",{creator, name, new_name, description, image_link, type, category, dev_status, command, site, github}]
update_task - обновление задачи.["update_task",{creator, name, new_name, description, mambers, status}]
add_task_member - добавление пользователя в список участников задачи.["add_task_member",{creator, name}]
- автор и название проекта указывается. Логин участника берётся из первого элемента required_posting_auths (required_posting_auths[0]).
Добавляется, только если в списке меньше 10 пользователей.
delete_task_member - удаление пользователя из списка. На это имеет право сам пользователь, создатель задачи и владелец шлюза. При удалении пользователя удаляются и все материалы, относящиеся к нему.["delete_task_member",{creator, name, task_member, date}]
- task_member необходимо указывать, т.к. обработка происходит не только в случае отправкой пользователем.
news - добавление или обновление новости. Проверяется, чтоб автор (отправитель) был и создателем проекта, либо находился в списке логинов команды.
Если date есть в json структуре, и новость с такой датой, логином автора и проекта названием с его создателем существует, обновление.["news", {project_creator, project_name, date, title, description, text, image_link}]
delete_one_news - удаление одной новости.["delete_one_news",{project_creator, project_name, date}]
(логин берётся от логина отправителя).
working_tasks - ход работы по задаче. Проверяется, что автор есть в списке пользователей, согласившихся на выполнение задачи.
Если есть отчёт по ходу работ с таким логином автора (отправителем), датой, создателем и названием задачи есть, обновление.["working_tasks", {task_creator, task_name, date, text}]
moderation - модерация. Я не стал делать true или false. Если операция не отправляется, значит проект или задача нормальные.["moderation",{type, creator, name}]
, где
type - это тип: project, task.
add_category - добавить категорию. В данных только name - имя. Также и delete_category, add_type и delete_ttype - удаление типа.
Всё
Будут вопросы, пишите в чат https://t.me/dpos_space.
С вами был незрячий делегат и разработчик @denis-skripnik.