* Переименован конфиг * Исправлены cpanfile и bootstrap.shб теперь они работают * loadConf и saveConf перемещены в conf.pm из myapi.psgi * Исправлен синтаксис README.md согласно форматированию GitHub * Обновлён .gitignore * Закончена работа над upload.pm
102 lines
4.0 KiB
Markdown
102 lines
4.0 KiB
Markdown
# 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
|