FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ameliabooking
/
vendor
/
apimatic
/
core
/
src
Edit File: Client.php
<?php declare(strict_types=1); namespace Core; use Core\Authentication\Auth; use Core\Request\Parameters\MultipleParams; use Core\Request\Request; use Core\Response\Context; use Core\Response\ResponseHandler; use Core\Response\Types\ErrorType; use Core\Types\Sdk\CoreCallback; use Core\Utils\JsonHelper; use CoreInterfaces\Core\Authentication\AuthInterface; use CoreInterfaces\Core\Logger\ApiLoggerInterface; use CoreInterfaces\Core\Request\ParamInterface; use CoreInterfaces\Http\HttpClientInterface; use CoreInterfaces\Sdk\ConverterInterface; class Client { private static $converter; private static $jsonHelper; public static function getConverter(Client $client = null): ConverterInterface { if (isset($client)) { return $client->localConverter; } return self::$converter; } public static function getJsonHelper(Client $client = null): JsonHelper { if (isset($client)) { return $client->localJsonHelper; } return self::$jsonHelper; } private $httpClient; private $localConverter; private $localJsonHelper; private $authManagers; private $serverUrls; private $defaultServer; private $globalConfig; private $globalRuntimeConfig; private $globalErrors; private $apiCallback; private $apiLogger; /** * @param HttpClientInterface $httpClient * @param ConverterInterface $converter * @param JsonHelper $jsonHelper * @param array<string,AuthInterface> $authManagers * @param array<string,string> $serverUrls * @param string $defaultServer * @param ParamInterface[] $globalConfig * @param ParamInterface[] $globalRuntimeConfig * @param array<string,ErrorType> $globalErrors * @param CoreCallback|null $apiCallback * @param ApiLoggerInterface $apiLogger */ public function __construct( HttpClientInterface $httpClient, ConverterInterface $converter, JsonHelper $jsonHelper, array $authManagers, array $serverUrls, string $defaultServer, array $globalConfig, array $globalRuntimeConfig, array $globalErrors, ?CoreCallback $apiCallback, ApiLoggerInterface $apiLogger ) { $this->httpClient = $httpClient; self::$converter = $converter; $this->localConverter = $converter; self::$jsonHelper = $jsonHelper; $this->localJsonHelper = $jsonHelper; $this->authManagers = $authManagers; $this->serverUrls = $serverUrls; $this->defaultServer = $defaultServer; $this->globalConfig = $globalConfig; $this->globalRuntimeConfig = $globalRuntimeConfig; $this->globalErrors = $globalErrors; $this->apiCallback = $apiCallback; $this->apiLogger = $apiLogger; } public function getGlobalRequest(?string $server = null): Request { $globalParams = new MultipleParams('Global Parameters'); $globalParams->parameters($this->globalConfig)->validate(self::getJsonHelper($this)); return new Request($this->serverUrls[$server ?? $this->defaultServer], $this, $globalParams); } public function getGlobalResponseHandler(): ResponseHandler { $responseHandler = new ResponseHandler(); array_walk($this->globalErrors, function (ErrorType $error, string $key) use ($responseHandler): void { $responseHandler->throwErrorOn($key, $error); }); return $responseHandler; } public function getHttpClient(): HttpClientInterface { return $this->httpClient; } public function getApiLogger(): ApiLoggerInterface { return $this->apiLogger; } public function validateAuth(Auth $auth): Auth { $auth->withAuthManagers($this->authManagers)->validate(self::getJsonHelper($this)); return $auth; } /** * @param ParamInterface[] $parameters */ public function validateParameters(array $parameters): MultipleParams { $parameters = array_merge($parameters, $this->globalRuntimeConfig); $paramGroup = new MultipleParams('Endpoint Parameters'); $paramGroup->parameters($parameters)->validate(self::getJsonHelper($this)); return $paramGroup; } public function beforeRequest(Request $request) { if (isset($this->apiCallback)) { $this->apiCallback->callOnBeforeWithConversion($request, self::getConverter($this)); } $this->apiLogger->logRequest($request); } public function afterResponse(Context $context) { if (isset($this->apiCallback)) { $this->apiCallback->callOnAfterWithConversion($context, self::getConverter($this)); } $this->apiLogger->logResponse($context->getResponse()); } }
Save
Back