Open main menu

Ace Stream Wiki β

Changes

Engine Service API

392 bytes added, 13:42, 27 May 2014
no edit summary
==Общее описание==
== Методы, которые можно использовать при разработке продуктов, предназначенных для премиум-пользователей и/или которые будут распространяться под индивидуальной лицензией ==
Сервисное API движка предназначено в первую очередь для предоставления сторонним приложениям возможности узнать, активированы ли какие-либо премиум-опции для движка, с которым работает приложение. Также API предоставляет возможность активировать нужную опцию от имени приложения.
 
Сервисное API движка работает на порту 6878, если не указан другой порт опцией <tt>--http-port</tt>.
Для проверки ключа пользователя, загрузки расширения и получения списка активированных опций используется веб-интерфейс движка, который работает на порту 6878.
 
API работает по протоколу HTTP. Запросы отсылаются на адрес <tt><nowiki>http://localhost:6878/webui/api/service</nowiki></tt>
Запросы отсылаются методами HTTP GET либо POST, ответы в формате JSON.
 
Ответы в формате JSON.
Файл-расширение можно получить с помощью API реселлера:
http://wiki.acestream.org/wiki/index.php/Reseller_API
 
==Методы API==
Добавили на вики описание метода API для создания ключа пользователя:
http://wiki.acestream.org/wiki/index.php/Reseller_API#createUserKey
 
Каждый запрос к API должен иметь обязательный параметр <tt>method</tt>, содержащий название вызываемого метода.
 
Ниже приведен список всех доступных методов.
Метод API createUserkey позволяет создавать ключи двух разных типов. Тип ключа задается параметром type:
 
===check_user_key===
'''<tt> type=1 </tt>''' - общий ключ, который обеспечит пользователю получения необходимого Премиум-статуса, для работы с любыми приложениями и отключение определенных форматов рекламы (такой ключ работает на любых устройствах с любыми приложениями)
Проверить, загружен ли указанный ключ пользователя в движок.
 
параметры:
'''<tt> type=2 </tt>''' - ключ для индивидуальной лицензии, который будет работать только с указанным приложением.
* '''key''' (''string'') - ключ пользователя
 
варианты ответов:
* '''{"status": "ok"}''' - указанный ключ загружен в движок
* '''{"status": "not_found"}''' - указанный ключ не загружен в движок
* '''{“status”: “error”, "error": "error description"}''' - при обработке запроса возникла ошибка
 
пример запроса:
При создании ключа с типом 2 в запросе обязательно должен быть указан параметр <tt> product </tt> (идентификатор продукта, к которому должен быть привязан ключ).
<nowiki>http://localhost:6878/webui/api/service?method=check_user_key&user_key=1111-2222-3333-4444</nowiki>
 
ответ:
Идентификатор продукта можно будет узнать на сайте acccounts.acestream.net (пока этот раздел недоступен мы можем выдавать идентификаторы по запросу).
<nowiki>{"status": "not_found"}</nowiki>
 
===check_product_user_keys===
Чтобы стать реселлером, нужно зарегистрироваться у нас на сайте и зайти по ссылке:
Проверка наличия ключей пользователя для конкретного продукта.
https://accounts.acestream.net/reseller
 
параметры:
Откроется форма регистрации реселлера, нужно нажать "зарегистрироваться", после этого мы получим письмо про регистрацию нового реселлера и поставим ему статус "подтвержден". После этого по ссылке https://accounts.acestream.net/reseller будут доступны все инструменты для реселлера.
* '''product_key''' (''string'') - публичная часть ключа продукта
 
варианты ответов:
* '''{"status": "ok"}''' - в движок загружен как минимум один ключ для указанного приложения
* '''{"status": "not_found"}''' - ключей для указанного приложения нет
* '''{“status”: “error”, "error": "error description"}''' - при обработке запроса возникла ошибка
 
пример запроса:
'''Предлагается следующая схема работы''' (п.2 - работает для версии движка 2.2.1-Next и 3.0.0 Beta):
<nowiki>http://localhost:6878/webui/api/service?method=check_product_user_keys&product_key=1111</nowiki>
 
ответ:
'''1) Проверка ключа пользователя:'''
<nowiki>{"status": "ok"}</nowiki>
http://127.0.0.1:6878/webui/app/check-user-key?key=<user_
key>
 
===load_extension===
Варианты ответов:
Загрузка файла-расширения в движок
 
Чтобы загрузить файл расширения в движок, нужно отправить POST запрос на адрес <nowiki>http://localhost:6878/webui/api/service?method=load_extension</nowiki>
* если указанный ключ загружен в движок:
{"status": "ok"}
 
В теле запроса нужно передать содержимое файла расширения, полученное с помощью метода API для реселлеров [[Reseller_API#createUserKey|createUserKey]]
* если указанный ключ не загружен в движок:
{"status": "not_found"}
 
варианты ответов:
* если при обработке запроса возникла ошибка:
* '''{"status": "ok"}''' - расширение успешно загружено в движок
{"error": "error description"}
* '''{“status”: “error”, "error": "error description"}''' - при обработке запроса возникла ошибка
пример запроса:
<nowiki>http://localhost:6878/webui/api/service?method=load_extension</nowiki>
 
ответ:
'''2) Чтобы загрузить файл расширения в движок, нужно отправить POST запрос на этот адрес:'''
<nowiki>{"status": "ok"}</nowiki>
http://127.0.0.1:6878/webui/app/load-extension
 
===get_services===
В теле запроса нужно передать содержимое файла расщирения.
Получить список премиум-опций, активированных на движке.
 
Если передается параметр <tt>product_key</tt>, то возвращается список опций, доступных для всех приложений, а также опций, доступных только для указанного приложения.
Варианты ответов:
 
Если параметр <tt>product_key</tt> не передается, то возвращается только список опций, доступных для всех приложений.
- если расширение успешно загружен в движок:
{"status": "ok"}
 
параметры:
- если при обработке запроса возникла ошибка:
* '''product_key''' (''string'') - необязательный параметр, в котором передается публичная часть ключа продукта
{"error": "error description"}
 
пример запроса:
'''3) Получение списка премиум-опций, активированных на движке:'''
<nowiki>http://127.0.0.1localhost:6878/webui/appapi/servicesservice?method=get_services&product_key=1111</getnowiki>
 
Формат ответа - массив объектов, каждый из которых описывает одну премиум-опцию.
 
Пример:
 
<nowiki>{
[
“status”: “ok”,
“services”:
[
{
"id": "noAds",
"name": "No ADs",
"valid_from": 1376939146,
"valid_to": 1411671946,
"trial": false,
"description": "\u041e\u0442\u043a\u043b\
u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b Ace Stream"
}
]
}</nowiki>
 
или
 
<nowiki>{“status”: “error”, “error”: “error description”}</nowiki>
'''Поля:'''
 
Поля:
* '''<tt> id (string) </tt>''' - идентификатор опции
* '''<tt> nameid''' (string) </tt>''string'') - названиеидентификатор опции
* '''name''' (''string'') - название опции
* '''<tt> valid_from (integer) </tt>''' - дата, с которой опция активна (unix timestamp)
* '''<tt> valid_tovalid_from''' (integer) </tt>''integer'') - дата, пос которуюкоторой опция активна (unix timestamp)
* '''valid_to''' (''integer'') - дата, по которую опция активна (unix timestamp)
* '''<tt> trial (boolean) </tt>''' - true, если опция активирована бесплатно на тестовый период
* '''trial''' (''boolean'') - true, если опция активирована бесплатно на тестовый период
* '''<tt> description (string) </tt>''' - описание опции
* '''description''' (''string'') - описание опции