add shopware store-api
This commit is contained in:
53
src/Shopware/StoreApiClient.php
Normal file
53
src/Shopware/StoreApiClient.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Shopware;
|
||||
|
||||
use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
|
||||
final readonly class StoreApiClient
|
||||
{
|
||||
public function __construct(
|
||||
private HttpClientInterface $httpClient,
|
||||
private string $baseUrl,
|
||||
private string $salesChannelAccessKey,
|
||||
private int $timeoutSeconds = 5,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws TransportExceptionInterface
|
||||
* @throws ServerExceptionInterface
|
||||
* @throws RedirectionExceptionInterface
|
||||
* @throws DecodingExceptionInterface
|
||||
* @throws ClientExceptionInterface
|
||||
*/
|
||||
public function searchProducts(array $criteria): array
|
||||
{
|
||||
$url = rtrim($this->baseUrl, '/') . '/store-api/product';
|
||||
|
||||
$response = $this->httpClient->request('POST', $url, [
|
||||
'headers' => [
|
||||
'Content-Type' => 'application/json',
|
||||
'Accept' => 'application/json',
|
||||
'sw-access-key' => $this->salesChannelAccessKey,
|
||||
],
|
||||
'json' => $criteria,
|
||||
'timeout' => $this->timeoutSeconds,
|
||||
]);
|
||||
|
||||
$statusCode = $response->getStatusCode();
|
||||
if ($statusCode < 200 || $statusCode >= 300) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return $response->toArray(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user