<?php
namespace Mollie\Api\HttpAdapter;
use Mollie\Api\Exceptions\UnrecognizedClientException;
class MollieHttpAdapterPicker implements \Mollie\Api\HttpAdapter\MollieHttpAdapterPickerInterface
{
/**
* @param \GuzzleHttp\ClientInterface|\Mollie\Api\HttpAdapter\MollieHttpAdapterInterface|null|\stdClass $httpClient
*
* @return \Mollie\Api\HttpAdapter\MollieHttpAdapterInterface
* @throws \Mollie\Api\Exceptions\UnrecognizedClientException
*/
public function pickHttpAdapter($httpClient)
{
if (!$httpClient) {
if ($this->guzzleIsDetected()) {
$guzzleVersion = $this->guzzleMajorVersionNumber();
if ($guzzleVersion && \in_array($guzzleVersion, [6, 7])) {
return \Mollie\Api\HttpAdapter\Guzzle6And7MollieHttpAdapter::createDefault();
}
}
return new \Mollie\Api\HttpAdapter\CurlMollieHttpAdapter();
}
if ($httpClient instanceof \Mollie\Api\HttpAdapter\MollieHttpAdapterInterface) {
return $httpClient;
}
if ($httpClient instanceof \_PhpScoper54524b0fd82d\GuzzleHttp\ClientInterface) {
return new \Mollie\Api\HttpAdapter\Guzzle6And7MollieHttpAdapter($httpClient);
}
throw new \Mollie\Api\Exceptions\UnrecognizedClientException('The provided http client or adapter was not recognized.');
}
/**
* @return bool
*/
private function guzzleIsDetected()
{
return \interface_exists("_PhpScoper54524b0fd82d\\GuzzleHttp\\ClientInterface");
}
/**
* @return int|null
*/
private function guzzleMajorVersionNumber()
{
// Guzzle 7
if (\defined('\\GuzzleHttp\\ClientInterface::MAJOR_VERSION')) {
return (int) \_PhpScoper54524b0fd82d\GuzzleHttp\ClientInterface::MAJOR_VERSION;
}
// Before Guzzle 7
if (\defined('\\GuzzleHttp\\ClientInterface::VERSION')) {
return (int) \_PhpScoper54524b0fd82d\GuzzleHttp\ClientInterface::VERSION[0];
}
return null;
}
}