Custom протокол Viz-projects: подробности из кода

03.09.2020 10:06:36

Здравствуйте. Для начала ссылка: 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

  1. Функция-обработчик 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}].
  2. Функция-обработчик 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.


0
2 Awards
215.172799 Ƶ
Show comment form
Comments