TeamleaderApiClient
Added LICENSE
更新された API クライアントは現在 v2 ブランチで開発中です
チームリーダー API に接続するための PHP クライアント。
パッケージは、composer 経由で入手できます。
$ 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 エンドポイントには、対応する Request クラスがあります。これらのクラスはクライアントの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
);