# 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 будет модуль для генерации метаданных в указанном репозитории для начала предполагается генерация метаданных для slackware linux, впрочем от расширения списков репозиториев меня удерживает только лень :) ### 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 будет модуль с простым ботом ### xmppbot.pm будет модуль с простым xmpp-ботом ## Зачем это? ХЗ, если есть что-то интересное в наборе модулей, то можно это использовать ## Подготовка к запуску ### Сервер приложений Для запуска api используется uwsgi. Возможен вариант запуска и через другие сервера psgi, например, через plack или nginx unit, но это не тестировалось. ### Перловые модули Помимо самого perl-а, для запуска нужны cpanm и lib::local, чтобы иметь возможность засосать всё остальное в каталог vendor_perl. ### Подготовительные операции Перед первым запуском и после каждого обновления необходимо запускать bootstrap.sh, который и засасывает зависимости из интернетов и складывает их все в каталог vendor_perl. Зависимостей сравнительно много и среди них есть "пидорские", но вполне себе стабильные модули, подтягиваемые по графу зависимостей не напрямую :) ### Рабочий каталог и данные API работает непосредственно в том каталоге, где лежит myapi.psgi. Конфигурация самого api и модулей хранится в каталоге data, там же хранится состояние модулей, которые подразумевают хранение таковых данных. ### Конфигурация uWSGI TBD ## Запуск TBD ## Останов TBD