Техзадание для галереи через Jabber
Существует проект Jabber Disk от чехов, код старый (уже нашел), но работает и на нескольких серверах встречается. От них же есть и проект галереи - аналогичный бот, только из полученных файлов строится галерея, доступная по адресу album.jabbim.cz. Если для диска код в итоге нашел, то галерея - в единственном экземпляре и код где-то потерян, а может никогда и не публиковался. Хотя идея весьма хорошая; если диск с некоторыми оговорками для быстрого обмена файлами можно заменить обычным HTTP Fileupload и на сейчас он не особо актуален (хотя и удобен - особенно если доработать и сделать в том числе обработку файлов, переданных через HTTP Fileupload), то аналогов галереи через джаббер нет. Причем, реализовано оно все на базе того же кода, что и для диска - когда дискаверишь disk.jabbim.cz, то только у них доступно для добавления 3 бота в этом поддомене; у остальных только 2 или 1.
Так или иначе, если создавать проект с нуля, то каким он видится:
- Думаю, нет смысла реализовывать галерею с нуля, если есть, например, готовые развивающиеся проекты - например, Piwigo. Всего-то надо реализовать бота, который будет выгружать туда файлы. API там есть для всего.
- Бот должен уметь работать как с HTTP Fileupload, так и с out-of-band bytestream. Т.е., по первому пункту - фактически, передача любой ссылки с изображением приводит к загрузке ботом этого изображения в галерею. Ну и более привычный вариант - OOB bytestream с возможностью указать в конфиге прокси (а надо ли это, если бот не передает файлы, а только принимает?). Для обоих случаев стоит сделать проверку получаемого файла - является ли он картинкой - с дальнейшей загрузкой.
- Взаимодействие с Piwigo (в зависимости от трудоемкости реализации):
- Лайт-версия: бот не умеет рулить пользователями. Он выгружает контент только в указанную учетку и все. Никаких регистраций или чего-то такого.
- Нормальная версия: боту даются права администратора в Piwigo. По команде с нового JID'а (т.е., когда пользователь добавлен, авторизован и скомандовал, например, REGISTER) заводится учетная запись пользователя с логином = JID. Пароль генерируется и возвращается пользователю. Эту же (либо, возможно, другую - пока не вижу причин не использовать ту же) команду можно использовать для сброса пароля. Т.е., по REGISTER проверяем наличие учетки, если нет - создаем и в любом случае (плохо ли это?) задаем новый пароль, который шлем пользователю.
- Основные команды бота можно скопировать с чешского - управление