# Сервис y.api

## y.api

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

Сервис предназначен для категоризации доменов и может использоваться как локально, так и в распределеннной системе. Во втором случае скорость получения ответа может зависеть задержек в сети

Стабильное подключение к сети Интернет необходимо для бесперебойной работы сервиса в случаях:

- загрузки и обновления базы данных
- обновления счетчиков категорий и неизвестных категорий
- отправки дополнительной информации

Запрос на подключение выполняется каждые 5 минут

### Использование сервиса

#### Запуск

1\. Установите Docker  
2\. Загрузите архив с контейнером командой `sudo docker load -i y_api.tar.gz`3. Запустите образ Docker в подсети  
 3.1 Или создайте отдельную подсеть  
 `sudo docker network create --driver=bridge --subnet=193.33.33.0/24 y-api-net`  
 и запустите контейнер  
 `sudo docker run -it -d --net y-api-net --ip 193.33.33.33 y-api:1`

4\. Проверьте работу сервиса запросом `curl http://193.33.33.33/qwerty.com`

<p class="callout info">Адрес 193.33.33.33 использован в качестве примера. Вы можете проверить работу сервиса на любой сети</p>

Пример ответа: `{"category": [36, 49], "bad": false, "category_name": ["Education", "Computers & Internet"]}`

<p class="callout warning">Внимание! Запрос к серверу направляется каждые 5 минут. Время проверки должно быть короче, чтобы данные не отправлялись на сервер статистики для выставления счетов</p>

Поддерживаются запросы типа **GET**

Логгирование выводится в стандартные потоки ввода и вывода **stdout** и **stderr**

### Примеры запросов

<div class="pointer-container" id="bkmrk-%C2%A0-0"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Копировать ссылку" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div><table id="bkmrk-%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81-%D0%9E%D1%82%D0%B2%D0%B5%D1%82-curl--v" width="100%"><tbody><tr><td width="321">**Запрос**

</td><td width="321">**Ответ**

</td></tr><tr><td width="321">curl -v http://193.33.33.33/qwerty.com

</td><td width="321">&lt; HTTP/1.1 200 OK

&lt; Content-type: application/json

&lt; Connection: keep-alive

\* no chunk, no close, no size. Assume close to signal end

&lt;

\* Closing connection 0

{"category": \[36, 49\], "bad": false, "category\_name": \["Education", "Computers &amp; Internet"\]}

</td></tr><tr><td width="321">curl -v http://193.33.33.33/foo

</td><td width="321">&lt; HTTP/1.1 404 Not Found

&lt; Connection: keep-alive

\* Connection #0 to host 193.33.33.33 left intact

</td></tr><tr><td width="321">curl -v http://193.33.33.33/stat/

</td><td width="321">&lt; HTTP/1.1 200 OK

&lt; Content-type: application/json

&lt; Connection: close

&lt;

\* Closing connection 0

{"counter\_cat": \[150002\], "counter\_unknown\_cat": \[0\]}

</td></tr><tr><td width="321">curl -v -X POST http://193.33.33.33/qwerty.com

</td><td width="321">&lt; HTTP/1.1 405 Method Not Allowed

&lt; Content-Type: text/html

&lt; Allow: GET

&lt; Connection: close

\* Closing connection 0

</td></tr><tr><td width="321">If there is no connection with the statistics server or any response from it other than "200 OK".

curl -v http://193.33.33.33/qwerty.com

</td><td width="321">&lt; HTTP/1.1 503 Service Unavailable

&lt; Content-type: application/json

&lt; Connection: close

&lt;

\* Closing connection 0

{"details": "billing failure"}

</td></tr></tbody></table>