1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
<?php
namespace Commercetools\Core\Client\Adapter;
use GuzzleHttp\Client;
use Commercetools\Core\Error\InvalidArgumentException;
use GuzzleHttp\ClientInterface;
class AdapterFactory
{
protected $adapters = [];
public function __construct()
{
$this->register('guzzle5', Guzzle5Adapter::class)
->register('guzzle6', Guzzle6Adapter::class);
}
public function register($name, $adapterClass)
{
$this->adapters[$name] = $adapterClass;
return $this;
}
public function getClass($name = null)
{
if (is_null($name)) {
$name = "guzzle6";
if (defined('\GuzzleHttp\Client::VERSION') && version_compare(constant('\GuzzleHttp\Client::VERSION'), '6.0.0', '<')) {
$name = 'guzzle5';
}
}
if (isset($this->adapters[$name])) {
return $this->adapters[$name];
}
throw new InvalidArgumentException();
}
public function getAdapter($name, $options)
{
$adapterClass = $this->getClass($name);
$adapter = new $adapterClass($options);
return $adapter;
}
}