setono/coolrunner-php-sdk

Consume the CoolRunner API v3 with this PHP SDK

v1.1.0 2024-03-06 11:33 UTC

README

Latest Version Software License Build Status Code Coverage Mutation testing

Consume the CoolRunner API v3 in PHP.

Installation

composer require setono/coolrunner-php-sdk

Usage

<?php

use Setono\CoolRunner\Client\Client;
use Setono\CoolRunner\DTO\Collection;
use Setono\CoolRunner\DTO\Servicepoint;

require_once '../vendor/autoload.php';

$client = new Client('USERNAME', 'TOKEN');

$servicepoints = $client
    ->servicepoints()
    ->find('gls', 'DK', 'Stigsborgvej 60 4. th.', '9400', 'Nørresundby')
;

foreach ($servicepoints as $servicepoint) {
    echo $servicepoint->name . "\n";
    echo $servicepoint->address->street . "\n";
    echo $servicepoint->address->zipCode . ' ' . $servicepoint->address->city . "\n";
    echo $servicepoint->address->countryCode . "\n\n";
}

will output something like:

Min Købmand Nørre Uttrup
Nørre Uttrup Torv 15
9400 Nørresundby
DK

Shell 7-Eleven Nørresundby
Østergade 27-29
9400 Nørresundby
DK

Next-Data.Dk
Østerbrogade 79
9400 Nørresundby
DK

...

Production usage

Internally this library uses the CuyZ/Valinor library which is particularly well suited for turning API responses in DTOs. However, this library has some overhead and works best with a cache enabled.

When you instantiate the Client you can provide a MapperBuilder instance. Use this opportunity to set a cache:

<?php

use CuyZ\Valinor\Cache\FileSystemCache;
use CuyZ\Valinor\MapperBuilder;
use Setono\CoolRunner\Client\Client;
use Setono\CoolRunner\DTO\Collection;
use Setono\CoolRunner\DTO\Servicepoint;

require_once '../vendor/autoload.php';

$cache = new FileSystemCache('path/to/cache-directory');
$client = new Client('USERNAME', 'TOKEN', (new MapperBuilder())->withCache($cache));

You can read more about it here: Valinor: Performance and caching.