feat(service): add ApiService, update services and factories with signature calculator and Pagination VOs
This commit is contained in:
parent
26d42cc0d8
commit
55caa0729b
11 changed files with 88 additions and 19 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
10
src/Service/ApiService.php
Normal file
10
src/Service/ApiService.php
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Uwil\ArcadiaApiPhpClient\Service;
|
||||
|
||||
interface ApiService
|
||||
{
|
||||
public function ping(): bool;
|
||||
}
|
||||
34
src/Service/ArcadiaApiService.php
Normal file
34
src/Service/ArcadiaApiService.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Uwil\ArcadiaApiPhpClient\Service;
|
||||
|
||||
use Uwil\ArcadiaApiPhpClient\Lib\ApiConfig;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class ArcadiaApiService implements ApiService
|
||||
{
|
||||
public function __construct(
|
||||
private ApiConfig $apiConfig
|
||||
) {
|
||||
}
|
||||
|
||||
#[\Override]
|
||||
public function ping(): bool
|
||||
{
|
||||
$url = clone $this->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"';
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue