Обновленный API-клиент в настоящее время находится в разработке в ветке v2.
PHP-клиент для подключения к API Teamleader.
Пакет доступен через композитор:
$ composer require nascom/teamleader-api-client
Во-первых, вам необходимо предоставить клиент, который может отправлять HTTP-запросы. Он должен реализовать HttpClientInterface
. Клиент, использующий Guzzle, уже доступен в пакете. Для этого необходимо установить guzzlehttp/guzzle.
<?php
use Nascom TeamleaderApiClient Http HttpClient GuzzleHttpClient ;
$ guzzle = new GuzzleHttp Client ([ ' base_uri ' => ' https://www.teamleader.be/api/ ' ]);
$ httpClient = new GuzzleHttpClient ( $ guzzle );
Вы можете использовать этот HttpClient для создания экземпляра фактического клиента API. Вам также необходимо будет предоставить свои учетные данные Teamleader API.
<?php
use Nascom TeamleaderApiClient Http ApiClient ApiClient ;
$ teamleaderParameters = [
' api_group ' => ' 12345 ' ,
' api_secret ' => ' XXXXXXXXXXXXXXX '
];
$ client = new ApiClient (
$ httpClient , // A client implementing HttpClientInterface.
$ teamleaderParameters // An array containing the Teamleader credentials.
);
Каждая конечная точка API имеет соответствующий класс запроса. Эти классы необходимо передать методу handle()
клиента, который вернет объект Response. Все доступные запросы можно найти здесь.
Например, вот как можно получить подробную информацию о проекте:
<?php
use Nascom TeamleaderApiClient Request Project RetrieveProjectRequest ;
$ projectRequest = new RetrieveProjectRequest ( 23 );
$ response = $ client -> handle ( $ projectRequest );
echo $ response -> getData (); // Returns the Teamleader JSON response as a string.
Дополнительные параметры можно передать в ApiClient. Они будут объединены с некоторыми параметрами по умолчанию и переданы HttpClient при отправке запроса.
<?php
$ client = new ApiClient (
$ httpClient ,
$ teamleaderParameters ,
[ ' connect_timeout ' => 5.0 ] // This will override the default timeout.
);
Вы можете создать собственный HttpClient для обработки запросов. Все, что нужно сделать, это реализовать HttpClientInterface
. Например, вы можете реализовать клиент, используя Curl.
<?php
use Nascom TeamleaderApiClient Http HttpClient HttpClientInterface ;
class CurlHttpClient implements HttpClientInterface
{
public function request ( $ method , $ uri , array $ options = [])
{
$ curl = curl_init ();
curl_setopt_array ( $ curl , array (
CURLOPT_RETURNTRANSFER => 1 ,
CURLOPT_URL => ' https://www.teamleader.be/api/ ' . $ uri ,
CURLOPT_POST => 1 ,
CURLOPT_POSTFIELDS => $ options [ ' form_params ' ]
));
$ response = curl_exec ( $ curl );
curl_close ( $ curl );
return $ response ;
}
}
$ client = new ApiClient (
new CurlHttpCLient (),
$ teamleaderParameters
);