diff --git a/src/ArcadiaApiClient.php b/src/ArcadiaApiClient.php index 370ef82..d058908 100644 --- a/src/ArcadiaApiClient.php +++ b/src/ArcadiaApiClient.php @@ -7,6 +7,7 @@ namespace Uwil\ArcadiaApiPhpClient; use Uwil\ArcadiaApiPhpClient\Factory\ApiClientFactory; use Uwil\ArcadiaApiPhpClient\Factory\ServiceFactory; use Uwil\ArcadiaApiPhpClient\Lib\ApiConfig; +use Uwil\ArcadiaApiPhpClient\Service\ApiService; use Uwil\ArcadiaApiPhpClient\Service\BrandService; use Uwil\ArcadiaApiPhpClient\Service\EmployeeService; use Uwil\ArcadiaApiPhpClient\Service\IncoService; @@ -21,7 +22,15 @@ class ArcadiaApiClient $apiClientFactory = new ApiClientFactory($this->apiConfig); $apiClient = $apiClientFactory->createClient(); - $this->serviceFactory = new ServiceFactory($apiClient); + $this->serviceFactory = new ServiceFactory( + $apiClient, + $this->apiConfig + ); + } + + public function apiService(): ApiService + { + return $this->serviceFactory->createApiService(); } public function employees(): EmployeeService diff --git a/src/Factory/ApiClientFactory.php b/src/Factory/ApiClientFactory.php index a0d0811..cc28211 100644 --- a/src/Factory/ApiClientFactory.php +++ b/src/Factory/ApiClientFactory.php @@ -13,6 +13,7 @@ use Microsoft\Kiota\Http\Middleware\Options\UserAgentHandlerOption; use Microsoft\Kiota\Http\Middleware\RetryHandler; use Microsoft\Kiota\Http\Middleware\UserAgentHandler; use Uwil\ArcadiaApiPhpClient\Auth\ApiMandatoryHeadersMiddleware; +use Uwil\ArcadiaApiPhpClient\Auth\RequestSignatureCalculator; use Uwil\ArcadiaApiPhpClient\Lib\ApiConfig; use Uwil\ArcadiaApiPhpClient\Lib\LibProperties; use Uwil\ArcadiaApiPhpClient\Logger\ApiLoggerMiddleware; @@ -31,8 +32,9 @@ final class ApiClientFactory public function createClient(): ApiClient { - $libProperties = new LibProperties(); - $uaOptions = new UserAgentHandlerOption(); + $signatureCalculator = new RequestSignatureCalculator(); + $libProperties = new LibProperties(); + $uaOptions = new UserAgentHandlerOption(); $uaOptions->setProductName($libProperties->productName); $uaOptions->setProductVersion($libProperties->productVersion); @@ -48,7 +50,8 @@ final class ApiClientFactory $handlerStack->push( ApiMandatoryHeadersMiddleware::signRequest( apiKey: $this->apiConfig->apiKey, - withSecret: $this->apiConfig->secret + withSecret: $this->apiConfig->secret, + signatureCalculator: $signatureCalculator ), ApiMandatoryHeadersMiddleware::HANDLER_NAME ); diff --git a/src/Factory/ServiceFactory.php b/src/Factory/ServiceFactory.php index ceea7dd..86635b9 100644 --- a/src/Factory/ServiceFactory.php +++ b/src/Factory/ServiceFactory.php @@ -9,11 +9,14 @@ use Uwil\ArcadiaApiPhpClient\Hydrator\EmployeeHydrator; use Uwil\ArcadiaApiPhpClient\Hydrator\IncoCompoHydrator; use Uwil\ArcadiaApiPhpClient\Hydrator\IncoHydrator; use Uwil\ArcadiaApiPhpClient\Hydrator\IncoShortHydrator; +use Uwil\ArcadiaApiPhpClient\Lib\ApiConfig; use Uwil\ArcadiaApiPhpClient\Repository\BrandApiRepository; use Uwil\ArcadiaApiPhpClient\Repository\EmployeeApiRepository; use Uwil\ArcadiaApiPhpClient\Repository\IncoApiRepository; use Uwil\ArcadiaApiPhpClient\Repository\IncoCompoApiRepository; use Uwil\ArcadiaApiPhpClient\Repository\IncoShortApiRepository; +use Uwil\ArcadiaApiPhpClient\Service\ApiService; +use Uwil\ArcadiaApiPhpClient\Service\ArcadiaApiService; use Uwil\ArcadiaApiPhpClient\Service\ArcadiaBrandService; use Uwil\ArcadiaApiPhpClient\Service\ArcadiaEmployeeService; use Uwil\ArcadiaApiPhpClient\Service\ArcadiaIncoService; @@ -27,6 +30,8 @@ use Uwil\ArcadiaKiotaOpenApiClient\ApiClient; */ final class ServiceFactory { + private ?ApiService $apiService = null; + private ?EmployeeService $employeeService = null; private ?IncoService $incoService = null; @@ -34,10 +39,18 @@ final class ServiceFactory private ?BrandService $brandService = null; public function __construct( - private readonly ApiClient $apiClient + private readonly ApiClient $apiClient, + private readonly ApiConfig $apiConfig ) { } + public function createApiService(): ApiService + { + return $this->apiService ??= new ArcadiaApiService( + $this->apiConfig + ); + } + public function createEmployeeService(): EmployeeService { return $this->employeeService ??= new ArcadiaEmployeeService( diff --git a/src/Service/ApiService.php b/src/Service/ApiService.php new file mode 100644 index 0000000..0c4f1c9 --- /dev/null +++ b/src/Service/ApiService.php @@ -0,0 +1,10 @@ +apiConfig->endpoint->withPath('/api/ping'); + $ch = curl_init((string) $url); + curl_setopt($ch, \CURLOPT_RETURNTRANSFER, true); + + if ($this->apiConfig->ignoreSelfSignedCert) { + curl_setopt($ch, \CURLOPT_SSL_VERIFYPEER, false); + } + + $body = curl_exec($ch); + + return $body === '"pong"'; + } +} diff --git a/src/Service/ArcadiaBrandService.php b/src/Service/ArcadiaBrandService.php index 3f82e24..5933a4b 100644 --- a/src/Service/ArcadiaBrandService.php +++ b/src/Service/ArcadiaBrandService.php @@ -8,8 +8,8 @@ use Uwil\ArcadiaApiPhpClient\Error\ApiError; use Uwil\ArcadiaApiPhpClient\Lib\ApiDto\Dto\Brand; use Uwil\ArcadiaApiPhpClient\Lib\ApiDto\Dto\PageOf; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\BrandCode; -use Uwil\ArcadiaApiPhpClient\Lib\PageSize; -use Uwil\ArcadiaApiPhpClient\Lib\Pagination; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\PageSize; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\Pagination; use Uwil\ArcadiaApiPhpClient\Lib\Pagination\StreamOf; use Uwil\ArcadiaApiPhpClient\Repository\BrandRepository; diff --git a/src/Service/ArcadiaEmployeeService.php b/src/Service/ArcadiaEmployeeService.php index 5de436d..a6f3107 100644 --- a/src/Service/ArcadiaEmployeeService.php +++ b/src/Service/ArcadiaEmployeeService.php @@ -10,8 +10,8 @@ use Uwil\ArcadiaApiPhpClient\Lib\ApiDto\Dto\PageOf; use Uwil\ArcadiaApiPhpClient\Lib\ApiSorter\EmployeeSorter; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\ArcadiaEmployeeId; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\SiteId; -use Uwil\ArcadiaApiPhpClient\Lib\PageSize; -use Uwil\ArcadiaApiPhpClient\Lib\Pagination; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\PageSize; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\Pagination; use Uwil\ArcadiaApiPhpClient\Lib\Pagination\StreamOf; use Uwil\ArcadiaApiPhpClient\Repository\EmployeeRepository; diff --git a/src/Service/ArcadiaIncoService.php b/src/Service/ArcadiaIncoService.php index 7ebdf2f..66a0423 100644 --- a/src/Service/ArcadiaIncoService.php +++ b/src/Service/ArcadiaIncoService.php @@ -12,8 +12,8 @@ use Uwil\ArcadiaApiPhpClient\Lib\ApiSorter\IncoSorter; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\BrandCode; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\IncoCompoId; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\IncoId; -use Uwil\ArcadiaApiPhpClient\Lib\PageSize; -use Uwil\ArcadiaApiPhpClient\Lib\Pagination; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\PageSize; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\Pagination; use Uwil\ArcadiaApiPhpClient\Lib\Pagination\StreamOf; use Uwil\ArcadiaApiPhpClient\Repository\IncoCompoRepository; use Uwil\ArcadiaApiPhpClient\Repository\IncoRepository; @@ -157,7 +157,7 @@ final class ArcadiaIncoService implements IncoService return $this->incoRepository->findWhere( $incoIdLike, $this->validateBrands($onBrands), - Pagination::firstPage(50) + Pagination::firstPage(new PageSize(50)) ); } @@ -169,7 +169,7 @@ final class ArcadiaIncoService implements IncoService return $this->incoShortRepository->findWhere( $incoIdLike, $this->validateBrands($onBrands), - Pagination::firstPage(50) + Pagination::firstPage(new PageSize(50)) ); } diff --git a/src/Service/BrandService.php b/src/Service/BrandService.php index 4f70339..08198a5 100644 --- a/src/Service/BrandService.php +++ b/src/Service/BrandService.php @@ -8,8 +8,8 @@ use Uwil\ArcadiaApiPhpClient\Error\ApiError; use Uwil\ArcadiaApiPhpClient\Lib\ApiDto\Dto\Brand; use Uwil\ArcadiaApiPhpClient\Lib\ApiDto\Dto\PageOf; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\BrandCode; -use Uwil\ArcadiaApiPhpClient\Lib\PageSize; -use Uwil\ArcadiaApiPhpClient\Lib\Pagination; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\PageSize; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\Pagination; use Uwil\ArcadiaApiPhpClient\Lib\Pagination\StreamOf; interface BrandService diff --git a/src/Service/EmployeeService.php b/src/Service/EmployeeService.php index 8d94135..5bab103 100644 --- a/src/Service/EmployeeService.php +++ b/src/Service/EmployeeService.php @@ -10,8 +10,8 @@ use Uwil\ArcadiaApiPhpClient\Lib\ApiDto\Dto\PageOf; use Uwil\ArcadiaApiPhpClient\Lib\ApiSorter\EmployeeSorter; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\ArcadiaEmployeeId; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\SiteId; -use Uwil\ArcadiaApiPhpClient\Lib\PageSize; -use Uwil\ArcadiaApiPhpClient\Lib\Pagination; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\PageSize; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\Pagination; use Uwil\ArcadiaApiPhpClient\Lib\Pagination\StreamOf; interface EmployeeService diff --git a/src/Service/IncoService.php b/src/Service/IncoService.php index 01ba606..6d074a5 100644 --- a/src/Service/IncoService.php +++ b/src/Service/IncoService.php @@ -12,8 +12,8 @@ use Uwil\ArcadiaApiPhpClient\Lib\ApiSorter\IncoSorter; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\BrandCode; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\IncoCompoId; use Uwil\ArcadiaApiPhpClient\Lib\ApiValueObject\IncoId; -use Uwil\ArcadiaApiPhpClient\Lib\PageSize; -use Uwil\ArcadiaApiPhpClient\Lib\Pagination; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\PageSize; +use Uwil\ArcadiaApiPhpClient\Lib\Pagination\Pagination; use Uwil\ArcadiaApiPhpClient\Lib\Pagination\StreamOf; interface IncoService