[PHP][Не завершено] RadioBOSS API

Dragon_Knight

New member
Всем привет.

Не найдя толковой реализации API на PHP решил написаю свою и по ходу стали возникать вопросы и предложения.
В конечном результате хочу выложить сюда готовую библиотеку взаимодействия с RadioBOSS.

Итак, собственно вопросы и предложения на данный момент:
1) Программа возвращает результат в разных форматах, что не очень удобно. Предлагаю сделать единую форму ответа.
2) Программа возвращает некоторые данные в формате XML. Это конечно хороший формат, но далеко не всегда удобный. Предлагаю добавить формат json и соответственно опцию "&return=xml|json".
3) В связи с тем, что разные версии программы имеют разные методы возник вопрос как из API узнать версию программы?
4) Все запросы идут методом GET, что во первых не всегда удобно во вторых пароль передаётся в открытом виде :eek:. Идеально это добавить SSL и работу с самозаверенными сертификатами а также добавить опции прослушивать конкретный IP для доп. безопасности.

Пока всё :)
 

scorp

Active member
Dragon_Knight сказал(а):
Всем привет.

Не найдя толковой реализации API на PHP решил написаю свою и по ходу стали возникать вопросы и предложения.
В конечном результате хочу выложить сюда готовую библиотеку взаимодействия с RadioBOSS.

Идея хорошая, я тоже планировал сделать, на основе уже существующей реализации, которую тут на форму выкладывали уже, но все никак... Кроме того много надо всего мудрить, чего могла бы программа возвращать изначально, но увы...

1) Это Вы о чем?
2) так в ПХП  есть вполне удобные средства для разбора XML, особой проблемы тут как бы нет. Можно получить тот же объект что и в json
3) я бы делал под последнюю и все, пусть обновляются кому надо...
4) это да, не помешал бы еще POST, а по паролю так это да, надо хешировать, и конечно же не md5, а чем-то поприличнее
 

Dragon_Knight

New member
1) Разные методы и не методы тоже могут вернуть разные данные в разном формате. То может быть текст "OK", "Exxx: ....", может быть картинка прямо в потоке, может XML формат. Это вс не очень хорошо. Обычно делают объект response, где описывают состояние, тех. данные и тело ответа. Т.е. например я гарантированно знаю что ответ будет в формате json, что там будет поле "state" (успешно или нет), поле "error", где текстом описана ошибка, если она есть и поле "data", где уже сам полезный ответ. Те-же картинки куда приятнее возвращать в формате base64, т.к. с вероятностью 99% её нужно будет показать на экран.

2) Да, есть, например SimpleXML, но сложно получить данные, распарсить их в массив, потом что-то с ними сделать, а потом обратно превратить в xml и отправить на сервер. Например readtag > writetag, при этом иметь обычный ассоциативный массив... json в этом плане проще.

3) Да, но Вы не смотрите в перёд. Вот я напишу код под актуальную версию и потом через 5 лет его найдут и будут удивляться почему ничего не работает. А не работает потому что API поменяется за это врем 5 раз.. Нужен метод текущей версии и метод доступных методов.
Разве что договорится с разработчиками программы и распространять класс вместе с программой.
У меня сейчас вообще стоит 5.4.7.1 и я вчера 2 часа тупил и не понимал почему не работают некоторые методы :)

4) POST да, но хеш пароля бесполезен. А вот галочка "использовать SSL" при которой программа создаст свой сертификат и будет использовать его, - это надёжно.
 

djsoft

Administrator
Команда форума
Dragon_Knight сказал(а):
1) Программа возвращает результат в разных форматах, что не очень удобно. Предлагаю сделать единую форму ответа.
Здесь исторические причины, первые команды были простые (плей, стоп и т.п.), затем уже были добавлены более сложные команды со структурами данных, редактирование тегов, заадний и т.п. В любом случае, есть документация.

Dragon_Knight сказал(а):
2) Программа возвращает некоторые данные в формате XML. Это конечно хороший формат, но далеко не всегда удобный. Предлагаю добавить формат json и соответственно опцию "&return=xml|json".
Любой современный язык имеет средства работы с любым из этих форматов - PHP точно.

Dragon_Knight сказал(а):
3) В связи с тем, что разные версии программы имеют разные методы возник вопрос как из API узнать версию программы?
Пока никак, добавим команду для получения этой информации. Хочу заметить, API полностью обратно совместимо: команды только добавляются или расширяются их ответы и параметры, но если сделано для старой версии, в новой всегда будет работать.

Dragon_Knight сказал(а):
4) Все запросы идут методом GET, что во первых не всегда удобно во вторых пароль передаётся в открытом виде . Идеально это добавить SSL и работу с самозаверенными сертификатами а также добавить опции прослушивать конкретный IP для доп. безопасности.
Для безопасности я бы рекомендовал проксировать запросы, например, через скрипт. Там уже можно сделать свою авторизацию, SSL, ограничить команды и добавить разные фильтры для параметров.

Dragon_Knight сказал(а):
А вот галочка "использовать SSL" при которой программа создаст свой сертификат и будет использовать его, - это надёжно.
В будущем, наверное, добавим поддержку SSL.
 
Верх