diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..14c56ab --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +vendor_perl/** diff --git a/README.md b/README.md new file mode 100644 index 0000000..2cc0dd1 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +### Что это? +myapi - разнообразное api и пример его использования. Api написано на perl-е для удобства и простоты разработки. + +### Что умеет? + +#### ping.pm +отвечает pong, нужно для проверки, что приложение в принципе живо + +#### easter_egg.pm +ditto, пробсто бесполезные функции, just for fun +quote - цитата дня +chanserv - обращение к несуществующему chanserv +nickserv - обращение у несуществующему nickserv +me - действие /me + +#### image_dl.pm +будет модуль для скачивания картинок из интернетов + +#### metagen.pm +будет модуль для генерации метаданных в указанном репозитории + +#### upload.pm +модуль-пример для загрузки файлов в каталог, конфигурируется в myapi.json в классе upload. + +#### 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. + +Зависимостей сравнительно много и среди них есть "пидорские", но вполне себе стабильные модули, подтягиваемые по графу зависимостей не напрямую :) + +#### Конфигурация uWSGI +TBD + +### Запуск +В процессе работы api, данные складываются в каталог data. +TBD + +### Отанов +TBD diff --git a/TODO b/TODO index 9428e6a..e563311 100644 --- a/TODO +++ b/TODO @@ -8,3 +8,5 @@ * shortener api for goo.gl or same services * paste api for some pastebins * image downloader +* repo uploader +* repo metadata re-generator diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100644 index 0000000..8366b6b --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cpanm -l vendor_perl Plack