Skip to content

Commit 6e6a5f8

Browse files
Merge pull request #3 from lamoda/feature/addAtolV5Support
Add AtolV5 support
2 parents 12c850b + d4c081b commit 6e6a5f8

File tree

7 files changed

+59
-2
lines changed

7 files changed

+59
-2
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"minimum-stability": "stable",
1313
"require": {
1414
"php": "^7.2",
15-
"lamoda/atol-client": "^1.2.0",
15+
"lamoda/atol-client": "^1.3.0",
1616
"symfony/dependency-injection": "^3.4 || ^4.0",
1717
"symfony/http-kernel": "^3.4 || ^4.0",
1818
"symfony/config": "^3.4 || ^4.0",

src/AtolClientBundle.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ final class AtolClientBundle extends Bundle
99
{
1010
public const API_CLIENT_VERSION_3 = 3;
1111
public const API_CLIENT_VERSION_4 = 4;
12+
public const API_CLIENT_VERSION_5 = 5;
1213

1314
public function getContainerExtension()
1415
{

src/DependencyInjection/AtolClientExtension.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Lamoda\AtolClient\V3\AtolApi as AtolApiV3;
66
use Lamoda\AtolClient\V4\AtolApi as AtolApiV4;
7+
use Lamoda\AtolClient\V5\AtolApi as AtolApiV5;
78
use Lamoda\AtolClientBundle\AtolClientBundle;
89
use Symfony\Component\Config\FileLocator;
910
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -48,6 +49,11 @@ private function createAtolClients(array $config, ContainerBuilder $container):
4849
$container->setAlias('atol_client.v4', 'atol_client.v4.default');
4950
$container->setAlias(AtolApiV4::class, 'atol_client.v4.default');
5051
}
52+
53+
if ($container->hasDefinition('atol_client.v5.default')) {
54+
$container->setAlias('atol_client.v5', 'atol_client.v5.default');
55+
$container->setAlias(AtolApiV5::class, 'atol_client.v5.default');
56+
}
5157
}
5258

5359
private function createAtolClient(string $name, array $clientConfig, ContainerBuilder $container): void
@@ -59,6 +65,9 @@ private function createAtolClient(string $name, array $clientConfig, ContainerBu
5965
case AtolClientBundle::API_CLIENT_VERSION_4:
6066
$this->createAtolClientV4($name, $clientConfig, $container);
6167
break;
68+
case AtolClientBundle::API_CLIENT_VERSION_5:
69+
$this->createAtolClientV5($name, $clientConfig, $container);
70+
break;
6271
default:
6372
throw new InvalidArgumentException('Wrong client version: ' . $clientConfig['version']);
6473
}
@@ -94,4 +103,19 @@ private function createAtolClientV4(string $name, array $clientConfig, Container
94103

95104
$container->setDefinition($id, $definition);
96105
}
106+
107+
private function createAtolClientV5(string $name, array $clientConfig, ContainerBuilder $container): void
108+
{
109+
$definition = new Definition(AtolApiV5::class, [
110+
new Reference('atol_client.object_converter'),
111+
new Reference($clientConfig['guzzle_client']),
112+
$clientConfig['guzzle_client_options'],
113+
$clientConfig['base_url'],
114+
]);
115+
$definition->setPublic(false);
116+
117+
$id = 'atol_client.v5.' . $name;
118+
119+
$container->setDefinition($id, $definition);
120+
}
97121
}

src/DependencyInjection/Configuration.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public function getConfigTreeBuilder()
2626
->beforeNormalization()
2727
->ifTrue(function ($v) {
2828
return isset($v['version'])
29-
&& $v['version'] === AtolClientBundle::API_CLIENT_VERSION_3
29+
&& AtolClientBundle::API_CLIENT_VERSION_3 === $v['version']
3030
&& empty($v['cash_register_group_code']);
3131
})
3232
->thenInvalid('cash_register_group_code is required for Atol Api Client v3')
@@ -37,6 +37,7 @@ public function getConfigTreeBuilder()
3737
->values([
3838
AtolClientBundle::API_CLIENT_VERSION_3,
3939
AtolClientBundle::API_CLIENT_VERSION_4,
40+
AtolClientBundle::API_CLIENT_VERSION_5,
4041
])
4142
->defaultValue(AtolClientBundle::API_CLIENT_VERSION_3)
4243
->end()

tests/App/config/config_multiple_clients.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ atol_client:
2424
cash_register_group_code: 'test_group2'
2525
callback_url: null
2626

27+
fourth:
28+
version: 5
29+
guzzle_client: app.guzzle.client
30+
guzzle_client_options: { 'a': 'test' }
31+
base_url: 'http://test_url2'
32+
cash_register_group_code: 'test_group2'
33+
callback_url: null
34+
2735
services:
2836
test.atol_client.v3:
2937
alias: 'atol_client.v3.default'
@@ -33,4 +41,7 @@ services:
3341
public: true
3442
test.atol_client.v4.third:
3543
alias: 'atol_client.v4.third'
44+
public: true
45+
test.atol_client.v5.fourth:
46+
alias: 'atol_client.v5.fourth'
3647
public: true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
atol_client:
3+
version: 5
4+
guzzle_client: app.guzzle.client
5+
guzzle_client_options: []
6+
base_url: 'http://test_url'
7+
callback_url: null
8+
9+
services:
10+
test.atol_client.v5:
11+
alias: 'atol_client.v5'
12+
public: true

tests/AtolClientBundleTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Lamoda\AtolClient\V3\AtolApi as AtolApiV3;
66
use Lamoda\AtolClient\V4\AtolApi as AtolApiV4;
7+
use Lamoda\AtolClient\V5\AtolApi as AtolApiV5;
78
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
89

910
final class AtolClientBundleTest extends WebTestCase
@@ -39,12 +40,19 @@ public function dataEnv(): array
3940
'test.atol_client.v4' => AtolApiV4::class,
4041
],
4142
],
43+
[
44+
'single_client_v5',
45+
[
46+
'test.atol_client.v5' => AtolApiV5::class,
47+
],
48+
],
4249
[
4350
'multiple_clients',
4451
[
4552
'test.atol_client.v3' => AtolApiV3::class,
4653
'test.atol_client.v3.second' => AtolApiV3::class,
4754
'test.atol_client.v4.third' => AtolApiV4::class,
55+
'test.atol_client.v5.fourth' => AtolApiV5::class,
4856
],
4957
],
5058
];

0 commit comments

Comments
 (0)