Содержание

Протокол/Общее

Протокол состоит из двух частей: запросы к серверу и ответы сервера. Запросы к серверу передаются методом POST. Ответы сервера формируются в виде XML.

Запросы клиента

Каждый запрос должен содержать в обязательном порядке параметр POST session_id – ID сессии клиента. Исключением является только функция авторизации клиента. Функция авторизации содержит два параметра:

login - содержит имя пользователя на форуме и
password – пароль.

Если какой-либо из параметров отсутствует, сервер вернет ошибку. Если отсутствует параметр action – сервер отобразит Web интерфейс. Ниже в описании протокола параметр session_id я буду опускать, считается, что он присутствует всегда. Все описанные ниже параметры POST для конкретного значения параметра action являются обязательными.

Пример запроса авторизации:
https://domain/xfr/index.php?action=auth&login=nickname&password=123456

Пример запроса списка категорий:
http://domain/xfr/index.php?session_id=hsg8745th3qgq9g3g&action=get_categories&categories=1,2,3,4

Ответы сервера

Как упоминалось выше, ответы сервера формируются в XML формате. Перед выводом XML отдаются заголовки:

	@header('Content-Type: text/xml; windows-1251');
	@header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
	@header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
	@header('Pragma: public');

Примечание

кодировка контента может быть и другой, в зависимости от настроек сервера и форума.

Вот типичный пример ответа сервера:

1: <?xml version="1.0" encoding="windows-1251"?>
2: <protocol version="xfr-sources-ru-alpha1">
3: <error>NO_RIGHTS</error>
4: <MYSQL_QUERY_COUNT>1</MYSQL_QUERY_COUNT>
5: <SCRIPT_EXECUTION_TIME>0.002</SCRIPT_EXECUTION_TIME>	
6: </protocol>

Строка 1 содержит объявление XML, включающее версию стандарта XML и кодировку.
Строка 2 содержит корневой элемент protocol единственным атрибутом version, описывающим текущую версию протокола.
Ниже (строки 3,4) содержатся остальные элементы протокола. В описании я буду опускать объявление XML и корневой элемент, т.к. они присутствуют всегда.

Все ошибки описываются в элементе error. Внутри элемента содержится код ошибки. Элемент MYSQL_QUERY_COUNT информативный, и содержит число выполненных запросов скрипта к БД. Элемент SCRIPT_EXECUTION_TIME содержит время выполнения скрипта в микросекундах.

Общая группа ошибок

ERROR_NO_ACTION – параметр “action” не передан в POST-запросе

ERROR_NO_LOGIN - параметр “login” не передан в POST-запросе

ERROR_NO_PASSWORD- параметр “password” не передан в POST-запросе

ERROR_LOGIN_FAILED – ошибка авторизации пользователя

ERROR_SESSION_LOGIN_FAILED – ошибка авторизации пользователя через сессию

ERROR_NO_RIGHTS – нет прав для использования данной функции

ERROR_FUNCTION_BLOCKED – функция заблокирована администратором