Skip to content

Создать клиентскую библиотеку для сервиса ws3.morpher.ru #1

@bzaar

Description

@bzaar

Имеется HTTP API: https://morpher.ru/ws3/

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

По аналогии с ними нужно сделать Composer-пакет, включающий библиотеку функций на PHP для вызова всех функций HTTP API. Можно взять за основу вот этот код.

Решение оформить в виде пул-реквеста к этому (пока пустому) репозиторию.

Решение должно включать в себя:

  • документацию примерно того же объема, что и JS-пакет: https://www.npmjs.com/package/morpher-ws3-client
  • юнит-тесты, проверяющие реакцию библиотеки на все возможные ответы сервиса WS3 (HTTP Status = 200, 4xx, 500) для каждого эндпойнта. Есть коды ошибок, общие для всех эндпойнтов (https://morpher.ru/ws3/#errors) и специфичные для конкретных эндпойнтов (например, https://morpher.ru/ws3/#qazaq/declension)
  • интеграционные тесты, работающие с «живым» веб-сервисом https://ws3.morpher.ru. Предусмотреть передачу в эти тесты секретного ключа-токена, который будет храниться в настройках CI-среды.

Тесты должны выполняться в CI-среде вроде TravisCI, GitHub Actions или AppVeyor (мне ближе AppVeyor). Файлы конфигурации CI-среды (appveyor.yml и подобные) должны быть внутри репозитория.

Код библиотеки должен быть совместим с PHP 7+.

Юнит-тесты

На каждый тип запроса (эндпойнт) нужны как минимум такие тесты:

  1. проверка правильности составления запроса к WS3
  2. проверка правильности разбора ответа WS3
  3. проверка возбуждения исключений в случае ошибочного ответа WS3 - по тесту на каждый код ошибки 4xx (завести отдельный тип исключения на каждый код ошибки)
  4. проверка возбуждения исключений в случае неожиданного ответа WS3 (500, таймаут, невалидный JSON).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions