4.2 KiB
MyAPI
Что это такое
myapi - разнообразное api и пример его использования. Api написано на perl-е для удобства и простоты разработки.
Что оно умеет
ping.pm
отвечает pong, нужно для проверки, что приложение в принципе живо
easter_egg.pm
ditto, пробсто бесполезные функции, just for fun quote - цитата дня (использует системную fortune) chanserv - обращение к несуществующему chanserv nickserv - обращение у несуществующему nickserv me - действие /me
image_dl.pm
модуль для скачивания картинок из интернетов
metagen.pm
модуль для генерации метаданных в указанном репозитории
buildinfo.pm
модуль для предоставления информации по собираемому slackware-пакету в ci-конвеере, для сборки этого самого пакета.
upload.pm
модуль для загрузки файлов в каталог, конфигурируется в myapi.json в классе upload. Загрузка происходит через метод PUT в процессе используется каcтомный заголовок auth.
paste.pm
будет модуль для пасты и для сокращения ссылок
utils.pm
модуль с простыми утилитами ip - возвращает ip, с которого пришёл клиент getaddrbyname - возвращает список ipv4 адресов по имени хоста getnamebyaddr - возвращает имя хоста по ipv4 адресу punycoder - кодирует в punycode punydecoder - превращает punycode-строку в utf-8 строку mytime - возвращает время
ircbot.pm
модуль с простым ботом
jabberbot.pm
модуль с простым jabber-ботом
telegrambot.pm
модуль с простым telegram-ботом
joyproxy.pm
модуль-прокся для генерации ссылок с видосиками с joy.reactor.cc
Зачем это?
ХЗ, если есть что-то интересное в наборе модулей, то можно это использовать
Подготовка к запуску
Сервер приложений
Для запуска api используется uwsgi. Возможен вариант запуска и через другие сервера psgi, например, через plack или nginx unit, но это не тестировалось.
Перловые модули
Помимо самого perl-а, для запуска нужны cpanm и lib::local, чтобы иметь возможность засосать всё остальное в каталог vendor_perl.
Подготовительные операции
Перед первым запуском и после каждого обновления необходимо запускать bootstrap.sh, который и засасывает зависимости из интернетов и складывает их все в каталог vendor_perl.
Зависимостей сравнительно много и среди них есть "пидорские", но вполне себе стабильные модули, подтягиваемые по графу зависимостей не напрямую :)
Рабочий каталог и данные
API работает непосредственно в том каталоге, где лежит myapi.psgi.
Конфигурация самого api и модулей хранится в каталоге data, там же хранится состояние модулей, которые подразумевают хранение таковых данных.
Конфигурация uWSGI
TBD
Конфигурация nginx Unit
Запуск
TBD
Останов
TBD