Download the PHP package dsl/my-target-sdk without Composer
On this page you can find all versions of the php package dsl/my-target-sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download dsl/my-target-sdk
More information about dsl/my-target-sdk
Files in dsl/my-target-sdk
Package my-target-sdk
Short Description API bindings for MyTarget
License Apache License 2.0
Informations about the package my-target-sdk
Unofficial MyTarget API Client
PHP клиент для работы с MyTarget API (v1/v2).
Install it via composer
How to work with it?
Также можно не использовать *Operator
классы, и вместо этого составлять запросы вручную. (об этом ниже)
Bootstrap it in 5 minutes
Для того чтобы пример выше заработал нужно создать граф зависимостей для ClientOperator
и CampaignOperator
.
Зависят оба этих оператора от компонентов Client
и Mapper
.
Для песочницы, инстанциировать клиент вместе с его зависимостями можно так:
Это создаст простейший клиент который может самостоятельно подписывать все запросы переданным токеном и возвращать ответ в виде массива (либо выбрасывать исключение если что-то пошло не так). Помимо этого есть дополнительные возможности, такие как управление токенами и учёт лимитов API. (об этом в Advanced features) Создать маппер для песочницы гораздо проще:
Теперь можно создать ClientOperator
и получить список клиентов:
Advanced features and usage
TODO
How does it work?
Весь проект разделен на несколько компонентов:
- Клиент (Transport) - всё что касается коммуникаций через сеть
- Маппер - нужен для того чтобы отображать ответы API на объекты
- Набор операторов - типизируют все возможные отправляемые и получаемые значения в виде объектов
Клиент использует набор middleware объектов которые имеют доступ к чтению/изменению запросов и ответов API.
Это позволяет легко разбивать различную функциональность, которая как-то связана с обработкой запросов, в разные сущности.
Например есть LimitingMiddleware
, ClientGrantMiddleware
и ResponseValidatingMiddleware
.
Все они схожи в том, что все работают на уровне HTTP-сообщений, но при этом семантически не имеют ничего общего.
Маппер выполняет простую функцию отражения API-ответов на типизированные объекты: $mapper->hydrateNew('Foo', $jsonObject)
вернёт экземпляр Foo
, где поля этого объекта будут заполнены в соответствии с аннотациями вида Field(name="api_field_name", type="string")
на них.
Операторы связывают два упомянутых выше компонента и позволяют работать с API на более высоком уровне. Но если вам не нравится работать с объектами и вас устраивают произвольные массивы данных, то есть возможность работать напрямую с клиентом. Таким образом вы все равно можете получить настроенную OAuth2 аутентификацию, конвертацию ошибочных ответов API в исключения и контроль ограничений на запросы.
HttpMiddleware
Работа с сетью происходит с помощью HttpMiddlewareStack
. Этот стек содержит все обработчики HTTP ответов и запросов, которые "стекуются" друг на друга. Пример обработчика выглядит так:
Этот middleware просто вызывает следующий за ним middleware. Данный вызов всегда возвращает объект типа Psr7\ResponseInterface
(либо выбрасывает исключение). Вот пример более полезного middleware, который может логировать весь HTTP-обмен:
Exceptions hierarchy
Все исключения этой библиотеки подчиняются такой иерархии:
Помимо этого они все разделены на два вида: Dsl\MyTarget\Exception\ApiException
и Dsl\MyTarget\Transport\Exception\NetworkException
.
How to contribute
Для того чтобы предложить свои изменения, вы можете сделать форк этого репозитория и создать PR с произвольным сообщением описывающим изменения.
All versions of my-target-sdk with dependencies
psr/http-message Version ~1
guzzlehttp/psr7 Version ^1
doctrine/annotations Version ^1