yaroslawww / ipro-software-api-php
iProSoftware api client (php)
Installs: 5 301
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.0
- nesbot/carbon: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mikey179/vfsstream: ^2.0@dev
- mockery/mockery: ^1.3
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.7
README
Unofficial IproSoftware api implementation.
Installation
You can install the package via composer:
composer require think.studio/ipro-software-api-php
Simple example
$iproSoftwareClient = new \IproSoftwareApi\IproSoftwareClient([ 'api_host' => 'my-iprosoftware-api-host', 'client_id' => 'my-iprosoftware-client-id', 'client_secret' => 'my-iprosoftware-client-secret', ]); $response = $iproSoftwareClient->getBookingRulesList(); $responseBody = json_decode($response->getBody());
Note: All predefined api requests name you can find here
Configure the client
The Trello client needs a few configuration settings to operate successfully.
Setting | Description |
---|---|
api_host |
An api domain associated with your application. |
client_id |
The application client ID associated with your application. |
client_secret |
The application client secret associated with your application. |
oauth_endpoint |
You can specify you own oauth endpoint (By default used /oauth/2.0/token ). |
requests_path_prefix |
You can specify you own endpoint prefix for all predefined endpoints (By default used /apis ). |
client_conf |
Set of predefined configurations applied to http client (By default package use Guzzle, all available options for Guzzle you can find here). |
cache_manager |
By default package not cache the access token and request new one every request. If you want to cache access token to some storage (file, DB, ...) than you should create you own class from interface IproSoftwareApi\Contracts\AccessTokenCacher and pass object to this setting |
access_token_class |
Also you can specify you own access token class implements interface IproSoftwareApi\Contracts\AccessToken |
Set configuration when creating client
$iproSoftwareClient = new \IproSoftwareApi\IproSoftwareClient([ 'api_host' => 'my-iprosoftware-api-host', 'client_id' => 'my-iprosoftware-client-id', 'client_secret' => 'my-iprosoftware-client-secret', 'cache_manager' => new MyDatabaseAccessTokenCacheManager(), 'client_conf' => [ 'timeout' => 15, 'http_errors' => false, 'headers' => [ 'Accept' => 'application/json', ] ] ]);
Set access token cache manager after initialisation
$iproSoftwareClient = new \IproSoftwareApi\IproSoftwareClient([ 'api_host' => 'my-iprosoftware-api-host', 'client_id' => 'my-iprosoftware-client-id', 'client_secret' => 'my-iprosoftware-client-secret' ]); $iproSoftwareClient->setAccessTokenCacheManager(new MyDatabaseAccessTokenCacheManager())
Set your own http client if you want full control over requests
$iproSoftwareClient = new \IproSoftwareApi\IproSoftwareClient(); $iproSoftwareClient->setHttpClient(new MyOwnHttpClient($credentials))
Handling exceptions
If you try to query with the wrong configuration, you will get an
exception IproSoftwareApi\Exceptions\IproSoftwareApiException
. If the server fails to get the access token, you
will receive IproSoftwareApi\Exceptions\IproSoftwareApiAccessTokenException
try { $response = $iproSoftwareClient->getBookingRulesList(); } catch (IproSoftwareApi\Exceptions\IproSoftwareApiAccessTokenException $e) { $code = $e->getCode(); // Http status code from response $reason = $e->getMessage(); // Http status reason phrase $httpResponse = $e->getResponse(); // Psr\Http\Message\ResponseInterface from http client }
Testing
composer test