Skip to content

Commit b713d35

Browse files
committed
Refactored the API endpoints and client
1 parent 65829b4 commit b713d35

File tree

63 files changed

+1563
-1245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1563
-1245
lines changed

composer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
"php-http/message-factory": "^v1.0",
3434
"php-http/multipart-stream-builder": "^1.0",
3535
"php-http/client-implementation": "^1.0",
36-
"symfony/expression-language": "^3.0|^4.0|^5.0"
36+
"symfony/expression-language": "^3.0|^4.0|^5.0",
37+
"webmozart/assert": "^1.10"
3738
},
3839
"require-dev": {
3940
"friendsofphp/php-cs-fixer": "^2.14",

spec/SyliusClientSpec.php

+8-8
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44

55
use Diglin\Sylius\ApiClient\Api;
66
use Diglin\Sylius\ApiClient\Security\Authentication;
7-
use Diglin\Sylius\ApiClient\SyliusClient;
8-
use Diglin\Sylius\ApiClient\SyliusClientInterface;
7+
use Diglin\Sylius\ApiClient\SyliusAdminClient;
8+
use Diglin\Sylius\ApiClient\SyliusAdminClientInterface;
99
use PhpSpec\ObjectBehavior;
1010

1111
class SyliusClientSpec extends ObjectBehavior
1212
{
1313
public function let(
1414
Authentication $authentication,
1515
Api\CartsApiInterface $cartsApi,
16-
Api\ChannelsApiInterface $channelsApi,
17-
Api\CountriesApiInterface $countriesApi,
16+
Api\ChannelApiInterface $channelsApi,
17+
Api\CountryApiInterface $countriesApi,
1818
Api\CurrenciesApiInterface $currenciesApi,
1919
Api\CustomersApiInterface $customersApi,
2020
Api\ExchangeRatesApiInterface $exchangeRatesApi,
@@ -70,8 +70,8 @@ public function let(
7070

7171
public function it_is_initializable()
7272
{
73-
$this->shouldImplement(SyliusClientInterface::class);
74-
$this->shouldHaveType(SyliusClient::class);
73+
$this->shouldImplement(SyliusAdminClientInterface::class);
74+
$this->shouldHaveType(SyliusAdminClient::class);
7575
}
7676

7777
public function it_gets_access_token($authentication)
@@ -95,12 +95,12 @@ public function it_gets_cart_api()
9595

9696
public function it_gets_channel_api()
9797
{
98-
$this->getChannelsApi()->shouldReturnAnInstanceOf(Api\ChannelsApiInterface::class);
98+
$this->getChannelsApi()->shouldReturnAnInstanceOf(Api\ChannelApiInterface::class);
9999
}
100100

101101
public function it_gets_country_api()
102102
{
103-
$this->getCountriesApi()->shouldReturnAnInstanceOf(Api\CountriesApiInterface::class);
103+
$this->getCountriesApi()->shouldReturnAnInstanceOf(Api\CountryApiInterface::class);
104104
}
105105

106106
public function if_gets_currencies_api()

src/Api/Admin/AddressApi.php

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Client\ResourceClientInterface;
6+
use Webmozart\Assert\Assert;
7+
8+
final class AddressApi implements AddressApiInterface
9+
{
10+
public function __construct(
11+
private ResourceClientInterface $resourceClient,
12+
) {}
13+
14+
public function get($code): array
15+
{
16+
Assert::integer($code);
17+
return $this->resourceClient->getResource('api/v2/admin/addresses/%d', [$code]);
18+
}
19+
}

src/Api/Admin/AddressApiInterface.php

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Api\Operation\GettableResourceInterface;
6+
7+
interface AddressApiInterface extends GettableResourceInterface
8+
{
9+
}

src/Api/Admin/AdjustmentApi.php

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Client\ResourceClientInterface;
6+
use Diglin\Sylius\ApiClient\Filter\FilterBuilderInterface;
7+
use Diglin\Sylius\ApiClient\Pagination\PageFactoryInterface;
8+
use Diglin\Sylius\ApiClient\Pagination\PageInterface;
9+
use Diglin\Sylius\ApiClient\Pagination\ResourceCursorFactoryInterface;
10+
use Diglin\Sylius\ApiClient\Pagination\ResourceCursorInterface;
11+
use Diglin\Sylius\ApiClient\Sort\SortBuilderInterface;
12+
use Webmozart\Assert\Assert;
13+
14+
final class AdjustmentApi implements AdjustmentApiInterface
15+
{
16+
public function __construct(
17+
private ResourceClientInterface $resourceClient,
18+
private PageFactoryInterface $pageFactory,
19+
private ResourceCursorFactoryInterface $cursorFactory,
20+
) {}
21+
22+
public function get($code): array
23+
{
24+
Assert::integer($code);
25+
return $this->resourceClient->getResource('api/v2/admin/adjustments/%d', [$code]);
26+
}
27+
28+
public function listPerPage(
29+
$code,
30+
int $limit = 10,
31+
array $queryParameters = [],
32+
FilterBuilderInterface $filterBuilder = null,
33+
SortBuilderInterface $sortBuilder = null
34+
): PageInterface {
35+
Assert::string($code);
36+
$data = $this->resourceClient->getResources('api/v2/admin/order-items/%s/adjustments', [$code]);
37+
38+
return $this->pageFactory->createPage($data);
39+
}
40+
41+
public function all(
42+
$code,
43+
int $pageSize = 10,
44+
array $queryParameters = [],
45+
FilterBuilderInterface $filterBuilder = null,
46+
SortBuilderInterface $sortBuilder = null
47+
): ResourceCursorInterface {
48+
$data = $this->listPerPage($code, $pageSize, $queryParameters, $filterBuilder, $sortBuilder);
49+
50+
return $this->cursorFactory->createCursor($pageSize, $data);
51+
}
52+
}
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Api\Operation\GettableResourceInterface;
6+
use Diglin\Sylius\ApiClient\Api\Operation\ListableDoubleResourceInterface;
7+
8+
interface AdjustmentApiInterface extends GettableResourceInterface, ListableDoubleResourceInterface
9+
{
10+
}

src/Api/Admin/AdministratorApi.php

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Client\ResourceClientInterface;
6+
use Diglin\Sylius\ApiClient\Filter\FilterBuilderInterface;
7+
use Diglin\Sylius\ApiClient\Pagination\PageFactoryInterface;
8+
use Diglin\Sylius\ApiClient\Pagination\PageInterface;
9+
use Diglin\Sylius\ApiClient\Pagination\ResourceCursorFactoryInterface;
10+
use Diglin\Sylius\ApiClient\Pagination\ResourceCursorInterface;
11+
use Diglin\Sylius\ApiClient\Sort\SortBuilderInterface;
12+
use Webmozart\Assert\Assert;
13+
14+
final class AdministratorApi implements AdministratorApiInterface
15+
{
16+
public function __construct(
17+
private ResourceClientInterface $resourceClient,
18+
private PageFactoryInterface $pageFactory,
19+
private ResourceCursorFactoryInterface $cursorFactory,
20+
) {}
21+
22+
public function get($code): array
23+
{
24+
Assert::integer($code);
25+
return $this->resourceClient->getResource('api/v2/admin/administrators/%d', [$code]);
26+
}
27+
28+
public function create($code, array $data = []): int
29+
{
30+
Assert::integer($code);
31+
return $this->resourceClient->createResource('api/v2/admin/administrators', [], $data);
32+
}
33+
34+
public function listPerPage(
35+
int $limit = 10,
36+
array $queryParameters = [],
37+
FilterBuilderInterface $filterBuilder = null,
38+
SortBuilderInterface $sortBuilder = null
39+
): PageInterface {
40+
$data = $this->resourceClient->getResources('api/v2/admin/administrators');
41+
42+
return $this->pageFactory->createPage($data);
43+
}
44+
45+
public function all(
46+
int $pageSize = 10,
47+
array $queryParameters = [],
48+
FilterBuilderInterface $filterBuilder = null,
49+
SortBuilderInterface $sortBuilder = null
50+
): ResourceCursorInterface {
51+
$data = $this->listPerPage($pageSize, $queryParameters, $filterBuilder, $sortBuilder);
52+
53+
return $this->cursorFactory->createCursor($pageSize, $data);
54+
}
55+
56+
public function upsert($code, array $data = []): int
57+
{
58+
Assert::integer($code);
59+
return $this->resourceClient->upsertResource('api/v2/admin/administrators/%d', [$code], $data);
60+
}
61+
62+
public function delete($code): int
63+
{
64+
Assert::integer($code);
65+
return $this->resourceClient->deleteResource('api/v2/admin/administrators/%d', [$code]);
66+
}
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Api\Operation\CreatableResourceInterface;
6+
use Diglin\Sylius\ApiClient\Api\Operation\DeletableResourceInterface;
7+
use Diglin\Sylius\ApiClient\Api\Operation\GettableResourceInterface;
8+
use Diglin\Sylius\ApiClient\Api\Operation\ListableResourceInterface;
9+
use Diglin\Sylius\ApiClient\Api\Operation\UpsertableResourceInterface;
10+
11+
interface AdministratorApiInterface extends GettableResourceInterface, CreatableResourceInterface, ListableResourceInterface, UpsertableResourceInterface, DeletableResourceInterface
12+
{
13+
}

src/Api/Admin/AvatarImageApi.php

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Client\ResourceClientInterface;
6+
use Webmozart\Assert\Assert;
7+
8+
final class AvatarImageApi implements AvatarImageApiInterface
9+
{
10+
public function __construct(
11+
private ResourceClientInterface $resourceClient,
12+
) {}
13+
14+
public function get($code): array
15+
{
16+
Assert::integer($code);
17+
return $this->resourceClient->getResource('api/v2/admin/avatar-images/%d', [$code]);
18+
}
19+
20+
public function create($code, array $data = []): int
21+
{
22+
Assert::integer($code);
23+
return $this->resourceClient->createResource('api/v2/admin/avatar-images', [], $data);
24+
}
25+
26+
public function delete($code): int
27+
{
28+
Assert::integer($code);
29+
return $this->resourceClient->deleteResource('api/v2/admin/avatar-images/%d', [$code]);
30+
}
31+
}
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Api\Operation\CreatableResourceInterface;
6+
use Diglin\Sylius\ApiClient\Api\Operation\DeletableResourceInterface;
7+
use Diglin\Sylius\ApiClient\Api\Operation\GettableResourceInterface;
8+
9+
interface AvatarImageApiInterface extends GettableResourceInterface, CreatableResourceInterface, DeletableResourceInterface
10+
{
11+
}

src/Api/Admin/CatalogPromotionApi.php

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Client\ResourceClientInterface;
6+
use Diglin\Sylius\ApiClient\Filter\FilterBuilderInterface;
7+
use Diglin\Sylius\ApiClient\Pagination\PageFactoryInterface;
8+
use Diglin\Sylius\ApiClient\Pagination\PageInterface;
9+
use Diglin\Sylius\ApiClient\Pagination\ResourceCursorFactoryInterface;
10+
use Diglin\Sylius\ApiClient\Pagination\ResourceCursorInterface;
11+
use Diglin\Sylius\ApiClient\Sort\SortBuilderInterface;
12+
use Webmozart\Assert\Assert;
13+
14+
final class CatalogPromotionApi implements CatalogPromotionApiInterface
15+
{
16+
public function __construct(
17+
private ResourceClientInterface $resourceClient,
18+
private PageFactoryInterface $pageFactory,
19+
private ResourceCursorFactoryInterface $cursorFactory,
20+
) {}
21+
22+
public function get($code): array
23+
{
24+
Assert::integer($code);
25+
return $this->resourceClient->getResource('api/v2/admin/catalog-promotions/%d', [$code]);
26+
}
27+
28+
public function create($code, array $data = []): int
29+
{
30+
Assert::integer($code);
31+
return $this->resourceClient->createResource('api/v2/admin/catalog-promotions', [], $data);
32+
}
33+
34+
public function listPerPage(
35+
int $limit = 10,
36+
array $queryParameters = [],
37+
FilterBuilderInterface $filterBuilder = null,
38+
SortBuilderInterface $sortBuilder = null
39+
): PageInterface {
40+
$data = $this->resourceClient->getResources('api/v2/admin/catalog-promotions');
41+
42+
return $this->pageFactory->createPage($data);
43+
}
44+
45+
public function all(
46+
int $pageSize = 10,
47+
array $queryParameters = [],
48+
FilterBuilderInterface $filterBuilder = null,
49+
SortBuilderInterface $sortBuilder = null
50+
): ResourceCursorInterface {
51+
$data = $this->listPerPage($pageSize, $queryParameters, $filterBuilder, $sortBuilder);
52+
53+
return $this->cursorFactory->createCursor($pageSize, $data);
54+
}
55+
56+
public function upsert($code, array $data = []): int
57+
{
58+
Assert::integer($code);
59+
return $this->resourceClient->upsertResource('api/v2/admin/catalog-promotions/%d', [$code], $data);
60+
}
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Api\Operation\CreatableResourceInterface;
6+
use Diglin\Sylius\ApiClient\Api\Operation\GettableResourceInterface;
7+
use Diglin\Sylius\ApiClient\Api\Operation\ListableResourceInterface;
8+
use Diglin\Sylius\ApiClient\Api\Operation\UpsertableResourceInterface;
9+
10+
interface CatalogPromotionApiInterface extends GettableResourceInterface, CreatableResourceInterface, ListableResourceInterface, UpsertableResourceInterface
11+
{
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Client\ResourceClientInterface;
6+
use Webmozart\Assert\Assert;
7+
8+
final class CatalogPromotionTranslationApi implements CatalogPromotionTranslationApiInterface
9+
{
10+
public function __construct(
11+
private ResourceClientInterface $resourceClient,
12+
) {}
13+
14+
public function get($code): array
15+
{
16+
Assert::integer($code);
17+
return $this->resourceClient->getResource('api/v2/admin/catalog-promotion-translations/%d', [$code]);
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Diglin\Sylius\ApiClient\Api\Admin;
4+
5+
use Diglin\Sylius\ApiClient\Api\Operation\GettableResourceInterface;
6+
7+
interface CatalogPromotionTranslationApiInterface extends GettableResourceInterface
8+
{
9+
}

0 commit comments

Comments
 (0)