Application Developers Example

From Ace Stream Wiki
Revision as of 11:19, 29 May 2014 by Anton (talk | contribs) (Работа с движком)
Jump to: navigation, search

Общая информация

Данный пример пошагово описывает все необходимые шаги для настройки работы стороннего приложения с движком Ace Stream.

Во всех запросах для примера будут использоваться такие переменные:

  • ключ продукта kjYX790gTytRaXV04IvC-xZH3A18sj5b1Tf3I-J5XVS1xsj-j0797KwxxLpBl26HPvWMm
  • API Key: 94d585bda4883a40d969d723adcaba36033e61d8
  • API Secret: b5dbd62b494664f5bfa9

Эти данные приведены исключительно для наглядности примера, в "боевом" режиме они работать не будут.

Регистрация разработчика и получение ключа продукта

Для начала Вам необходимо зарегистрироваться в системе Ace Stream как разработчик приложений, после чего Вы сможете зарегистрировать свое приложение и получить для него ключ продукта. Как это сделать, описано в разделе Разработчики.

Работа с движком

По умолчанию работать с Вашим приложением будет только движок, для которого активирована опция NoADs.

Если эта опция не активирована, то на любую попытку воспроизвести что-либо движок будет возвращать ошибку с таким текстом: No ADs option must be activated to use this product

Пример получения такой ошибки согласно API движка:

>> START PID 94c2fd8fb9bc8f2fc71a2cbe9d4b866f227a0209 0
<< STATE 1
<< STATUS main:starting
<< STATE 0
<< STATUS main:idle
<< STATUS main:err;0;No ADs option must be activated to use this product

Соответственно, для начала работы Вашему приложению необходимо проверить, активирована ли опция NoADs на движке.

Проверка активации опции NoADs на движке

Метод get_services сервисного API движка позволяет узнать, какие опции активированы на движке. Для этого нужно отправить HTTP GET запрос на движок:

http://localhost:6878/webui/api/service?method=get_services&product_key=kjYX790gTytRaXV04IvC

В запросе нужно передать публичную часть ключа продукта (kjYX790gTytRaXV04IvC) в параметре product_key.

Варианты ответов

  • если возникла ошибка (такого не должно быть, так что в этом случае, пожалуйста, вышлите нам логи движка)
{"status": "error", "error": "error description"}
  • если на движке не активирована опция NoADs
{"status": "ok", "services":[]}
  • если на движке активирована опция NoADs
{
"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"
  }
]
}

В возвращаемом списке могут быть и другие опции, кроме NoADs. Для того, чтобы узнать, активирована ли конкретная опция, нужно пройтись по списку и проверять поле id каждого элемента (id опции NoADs - noAds).

Если опция NoADs не активирована, Ваше приложения может ее активировать. Для этого нужно выполнить такие шаги:

  • создать новый ключ пользователя (метод createUserKey API для реселлеров)
  • активировать опцию NoADs для этого ключа пользователя (метод activateService API для реселлеров)
  • загрузить ключ пользователя в движок (метод extension сервисного API движка)

Задача ключа пользователя - идентифицировать пользователя Вашего приложения в системе Ace Stream без необходимости для пользователя регистрироваться в нашей системе.

Если у Вас есть возможность связать созданный с помощью API разработчика ключ пользователя с конкретным пользователем Вашего приложения, мы рекомендуем вам сделать это. В этом случае при необходимости, например, повторно активировать дополнительную опцию для пользователя не нужно будет создавать новый ключ пользователя. Достаточно будет сделать активации опции для существующего.

Ниже более подробно описаны шаги по созданию нового ключа пользователя и активации.

Создание ключа пользователя

Используется метод createUserKey API для разработчиков.

Запрос:

https://api.acestream.net/developer?method=createUserKey ↵
    &api_key=94d585bda4883a40d969d723adcaba36033e61d8 ↵
    &api_version=1.0 ↵
    &product=kjYX790gTytRaXV04IvC ↵
    &sign=fcf118b246892d80111de2661b79edb27ff48f08

Ответ:

{
  "userKey":"84acee3a529bafaa65215af6f86d03fe38020b2d",
  "extension":"F5T6L+X\/TnhqoXP\/TyzlaaEmAT7uu97HHvJZ8u7 ↵
ShbGBf1w4OAgRhP7Hj0+DGzjK2AolsnfkMgOSFq4qYOlgQdWR3nRGJCq ↵
bX8QxqRC\/zbNu+3RerhylcdqvVEuAuWSuEQW0\/tgaqKaIVrfVSug\/ ↵
SVrBTLtXea\/4FLqXzz8lTYbv90p\/Nmw6jZcpaSaf4ISJQo9d+NTJ15 ↵
cz0emN+FtdABjIZNz91NVEWWyzMNl5iorzCWS8lYrdRQgT\/psdbf3N6 ↵
T2wfozL2b98yOkGH53eG4uc5wX+75xluvKwnKK32MJ7uDPZpDLHxTNc9 ↵
2GCXKEloLFl+IyC91gghJpry6erUN3g9musH9CKvk4TZoZ+RTQINXlxr ↵
+IDklEnL6OBnbrMrXSsjxahdQM2yFWRE\/gG91mEB6JNN0z99oswOiMg ↵
hx0="
}

Активация

Используется метод activateService API для разработчиков.

В примере активируется опция NoADs сроком на 1 месяц.

Запрос:

https://api.acestream.net/developer?method=activateService ↵
    &api_key=94d585bda4883a40d969d723adcaba36033e61d8 ↵
    &api_version=1.0 ↵
    &product=kjYX790gTytRaXV04IvC ↵
    &user_key=84acee3a529bafaa65215af6f86d03fe38020b2d ↵
    &service=noAds ↵
    &period=m1 ↵
    &sign=2f55622fb9c21af5b950c210774ea34247d1a073

Ответ:

{"validFrom":1401204680,"validTo":1403796680}

Загрузка ключа в движок

Используется метод load_extension сервисного API движка.

Запрос:

POST /webui/api/service?method=load_extension HTTP/1.1
Host: localhost
Content-Type: text/plain
Content-Length: 437

F5T6L+X\/TnhqoXP\/TyzlaaEmAT7uu97HHvJZ8u7ShbGBf1w4OAgRhP7Hj0+DGz ↵
jK2AolsnfkMgOSFq4qYOlgQdWR3nRGJCqbX8QxqRC\/zbNu+3RerhylcdqvVEuAu ↵
WSuEQW0\/tgaqKaIVrfVSug\/SVrBTLtXea\/4FLqXzz8lTYbv90p\/Nmw6jZcpa ↵
Saf4ISJQo9d+NTJ15cz0emN+FtdABjIZNz91NVEWWyzMNl5iorzCWS8lYrdRQgT\ ↵
/psdbf3N6T2wfozL2b98yOkGH53eG4uc5wX+75xluvKwnKK32MJ7uDPZpDLHxTNc ↵
92GCXKEloLFl+IyC91gghJpry6erUN3g9musH9CKvk4TZoZ+RTQINXlxr+IDklEn ↵
L6OBnbrMrXSsjxahdQM2yFWRE\/gG91mEB6JNN0z99oswOiMghx0=

Ответ:

HTTP/1.0 200 OK
Server: BaseHTTP/0.3 Python/2.7.2
Date: Tue, 27 May 2014 15:46:22 GMT
Content-Type: application/json
Content-Length: 16

{"status": "ok"}