Skip to content

Commit 63b0910

Browse files
author
Maelmin Henge
committed
update namespace, develop params provider
1 parent d218fbe commit 63b0910

Some content is hidden

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

46 files changed

+388
-181
lines changed

README.md

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@ composer require hengebytes/webservice-core-async-bundle
1111
## Configuration
1212

1313
```yaml
14-
# config/packages/webservice_core_async.yaml
15-
webservice_core_async:
14+
# config/packages/hb_webservice_core_async.yaml
15+
hb_webservice_core_async:
16+
# Available options: 'symfony_params', 'settings_bundle', 'foo.bar.service_name'
17+
# If 'symfony_params' is used, the bundle will look for the parameters in the symfony param bag
18+
# If 'settings_bundle' is used, the bundle will look for the parameters in the hengebytes/settings-bundle
19+
# If 'foo.bar.service_name' is used, the bundle will look for the parameters in the service 'foo.bar.service_name' should implement Hengebytes\WebserviceCoreAsyncBundle\Provider\ParamsProviderInterface
20+
params_provider: ~ # default is null
1621
# by default the bundle will not use any cache
1722
cache:
1823
# second level cache adapter for persistent data default is null
@@ -45,7 +50,7 @@ monolog:
4550
// config/bundles.php
4651
return [
4752
// ...
48-
WebserviceCoreAsyncBundle\WebserviceCoreAsyncBundle::class => ['all' => true],
53+
Hengebytes\WebserviceCoreAsyncBundle\HBWebserviceCoreAsyncBundle::class => ['all' => true],
4954
];
5055
```
5156

@@ -57,9 +62,9 @@ return [
5762
// src/Service/MyService.php
5863
namespace App\Service;
5964

60-
use WebserviceCoreAsyncBundle\Handler\AsyncRequestHandler;
61-
use WebserviceCoreAsyncBundle\Response\AsyncResponse;
62-
use WebserviceCoreAsyncBundle\Request\WSRequest;
65+
use Hengebytes\WebserviceCoreAsyncBundle\Handler\AsyncRequestHandler;
66+
use Hengebytes\WebserviceCoreAsyncBundle\Response\AsyncResponse;
67+
use Hengebytes\WebserviceCoreAsyncBundle\Request\WSRequest;
6368

6469
class MyService
6570
{
@@ -152,7 +157,7 @@ class MyController extends AbstractController
152157
}
153158
```
154159

155-
### Available Settings in hengebytes/settings-bundle
160+
### Possible variants of configuration params in Settings when using `settings_bundle`
156161

157162
| Key | Value |
158163
|-----------------------------------------------------------|-----------------------|
@@ -161,6 +166,31 @@ class MyController extends AbstractController
161166
| `cache/my_service/customAction/ttl` | 600 |
162167
| IF NO CUSTOM ACTION`cache/my_service/action/ttl` | 600 |
163168
| OVERRIDE`cache/my_service/my_subService/customAction/ttl` | 300 |
169+
| `timeout/my_service/customAction` | 15 |
170+
| OVERRIDE`timeout/my_service/my_subService/customAction` | 25 |
171+
| `logs/store` | 1 |
172+
| OVERRIDE`logs/store/customAction` | 0 |
173+
| `logs/mask_sensitive_data` | 1 |
174+
| `logs/mask_sensitive_member_pii` | 1 |
175+
| `logs/max_length` | 900000 |
176+
177+
### Possible variants of configuration params in symfony configuration when using `symfony_params`
178+
179+
```yaml
180+
parameters:
181+
hb_webservice_core_async.base_url.my_service: 'http://example.com'
182+
hb_webservice_core_async.base_url.my_service.my_subService: 'http://example2.com'
183+
hb_webservice_core_async.cache_ttl.my_service.customAction: 600
184+
hb_webservice_core_async.cache_ttl.my_service.action: 600
185+
hb_webservice_core_async.cache_ttl.my_service.my_subService.customAction: 300
186+
hb_webservice_core_async.timeout.my_service.customAction: 15
187+
hb_webservice_core_async.timeout.my_service.my_subService.customAction: 25
188+
hb_webservice_core_async.logs.store: 1
189+
hb_webservice_core_async.logs.store.customAction: 0
190+
hb_webservice_core_async.logs.mask_sensitive_data: 1
191+
hb_webservice_core_async.logs.mask_sensitive_member_pii: 1
192+
hb_webservice_core_async.logs.max_length: 900000
193+
```
164194
165195
### Validate Response
166196
@@ -170,10 +200,10 @@ To be used in parsing response and validate it to throw exception if needed
170200
// src/Middleware/MyResponseValidatorResponseModifier.php
171201
namespace App\Middleware;
172202

173-
use WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
174-
use WebserviceCoreAsyncBundle\Request\WSRequest;
175-
use WebserviceCoreAsyncBundle\Response\ParsedResponse;
176-
// MyServiceResponseFailException should extend WebserviceCoreAsyncBundle\Exception\ResponseFailException
203+
use Hengebytes\WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
204+
use Hengebytes\WebserviceCoreAsyncBundle\Request\WSRequest;
205+
use Hengebytes\WebserviceCoreAsyncBundle\Response\ParsedResponse;
206+
// MyServiceResponseFailException should extend Hengebytes\WebserviceCoreAsyncBundle\Exception\ResponseFailException
177207
use App\Exceptions\MyServiceResponseFailException;
178208

179209
class MyResponseValidatorResponseModifier implements ResponseModificationInterface
@@ -216,12 +246,12 @@ Higher priority will be executed first
216246

217247
Higher priority will be executed first
218248

219-
| Key | Value | Condition | Could be disabled |
220-
|----------------------------------------|-------|---------------------------------------------------------------------|-------------------|
221-
| `LockResponseLoaderResponseModifier` | 250 | $response->isCached | With Cache |
222-
| `ReloadLockedResponseResponseModifier` | 240 | $response->isCached | With Cache |
223-
| `ResponseParserResponseModifier` | 220 | Always | - |
224-
| `LogResponseModifier` | 210 | !$response->isCached | With Logs |
225-
| `StoreToCacheResponseModifier` | -200 | !$response->isCached | With Cache |
226-
| `RequestUnlockResponseModifier` | -210 | !$response->isCached && $response->WSRequest->isCachable() | With Cache |
227-
| `InvalidateCacheResponseModifier` | -220 | !$response->isCached && !$response->WSRequest->isGETRequestMethod() | With Cache |
249+
| Key | Value | Condition | Could be disabled |
250+
|----------------------------------------|-------|-----------------------------------------------------------------------|-------------------|
251+
| `LockResponseLoaderResponseModifier` | 250 | `$response->isCached` | With Cache |
252+
| `ReloadLockedResponseResponseModifier` | 240 | `$response->isCached` | With Cache |
253+
| `ResponseParserResponseModifier` | 220 | Always | - |
254+
| `LogResponseModifier` | 210 | `!$response->isCached` | With Logs |
255+
| `StoreToCacheResponseModifier` | -200 | `!$response->isCached` | With Cache |
256+
| `RequestUnlockResponseModifier` | -210 | `!$response->isCached && $response->WSRequest->isCachable()` | With Cache |
257+
| `InvalidateCacheResponseModifier` | -220 | `!$response->isCached && !$response->WSRequest->isGETRequestMethod()` | With Cache |

composer.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
"symfony/http-client": "^6.4 || ^7.0"
1616
},
1717
"suggest": {
18-
"hengebytes/response-filter-bundle": "For modify/filter responses"
18+
"hengebytes/response-filter-bundle": "For modify/filter responses",
19+
"hengebytes/setting-bundle": "For store bundle settings in DB"
1920
},
2021
"autoload": {
2122
"psr-4": {
22-
"WebserviceCoreAsyncBundle\\": "src/"
23+
"Hengebytes\\WebserviceCoreAsyncBundle\\": "src/"
2324
}
2425
}
2526
}

src/Cache/CacheManager.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php
22

33

4-
namespace WebserviceCoreAsyncBundle\Cache;
4+
namespace Hengebytes\WebserviceCoreAsyncBundle\Cache;
55

6-
use WebserviceCoreAsyncBundle\Request\WSRequest;
7-
use WebserviceCoreAsyncBundle\Response\CacheResponse;
8-
use WebserviceCoreAsyncBundle\Tagger\CacheTagProvider;
6+
use Hengebytes\WebserviceCoreAsyncBundle\Request\WSRequest;
7+
use Hengebytes\WebserviceCoreAsyncBundle\Response\CacheResponse;
8+
use Hengebytes\WebserviceCoreAsyncBundle\Tagger\CacheTagProvider;
99
use Exception;
1010
use Psr\Cache\CacheException;
1111
use Psr\Cache\InvalidArgumentException;

src/Cache/Middleware/Request/CacheTTLRequestModifier.php

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?php
22

3-
namespace WebserviceCoreAsyncBundle\Cache\Middleware\Request;
3+
namespace Hengebytes\WebserviceCoreAsyncBundle\Cache\Middleware\Request;
44

5-
use hengebytes\SettingBundle\Interfaces\SettingHandlerInterface;
6-
use WebserviceCoreAsyncBundle\Middleware\RequestModifierInterface;
7-
use WebserviceCoreAsyncBundle\Request\WSRequest;
5+
use Hengebytes\WebserviceCoreAsyncBundle\Middleware\RequestModifierInterface;
6+
use Hengebytes\WebserviceCoreAsyncBundle\Request\WSRequest;
7+
use Hengebytes\WebserviceCoreAsyncBundle\Provider\ParamsProviderInterface;
88

99
readonly class CacheTTLRequestModifier implements RequestModifierInterface
1010
{
11-
public function __construct(private SettingHandlerInterface $settingHandler)
11+
public function __construct(private ?ParamsProviderInterface $paramsProvider = null)
1212
{
1313
}
1414

@@ -17,14 +17,8 @@ public function modify(WSRequest $request): void
1717
if ($request->isCacheTTLSet()) {
1818
return;
1919
}
20-
if ($request->subService) {
21-
$ttl = (int)$this->settingHandler->get(
22-
'cache/' . $request->webService . '/' . $request->subService . '/' . $request->getCustomAction() . '/ttl', '0'
23-
);
24-
}
25-
$ttl ??= (int)$this->settingHandler->get(
26-
'cache/' . $request->webService . '/' . $request->getCustomAction() . '/ttl', '0'
27-
);
20+
21+
$ttl = $this->paramsProvider->getCacheTTL($request);
2822

2923
$request->setCacheTTL($ttl);
3024
}

src/Cache/Middleware/Response/InvalidateCacheResponseModifier.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?php
22

3-
namespace WebserviceCoreAsyncBundle\Cache\Middleware\Response;
3+
namespace Hengebytes\WebserviceCoreAsyncBundle\Cache\Middleware\Response;
44

5-
use WebserviceCoreAsyncBundle\Cache\CacheManager;
6-
use WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7-
use WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8-
use WebserviceCoreAsyncBundle\Response\AsyncResponse;
9-
use WebserviceCoreAsyncBundle\Response\ParsedResponse;
5+
use Hengebytes\WebserviceCoreAsyncBundle\Cache\CacheManager;
6+
use Hengebytes\WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7+
use Hengebytes\WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8+
use Hengebytes\WebserviceCoreAsyncBundle\Response\AsyncResponse;
9+
use Hengebytes\WebserviceCoreAsyncBundle\Response\ParsedResponse;
1010

1111
readonly class InvalidateCacheResponseModifier implements ResponseModificationInterface
1212
{

src/Cache/Middleware/Response/LockResponseLoaderResponseModifier.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<?php
22

3-
namespace WebserviceCoreAsyncBundle\Cache\Middleware\Response;
3+
namespace Hengebytes\WebserviceCoreAsyncBundle\Cache\Middleware\Response;
44

5-
use WebserviceCoreAsyncBundle\Cache\CacheManager;
6-
use WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7-
use WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8-
use WebserviceCoreAsyncBundle\Response\AsyncResponse;
9-
use WebserviceCoreAsyncBundle\Response\CacheResponse;
10-
use WebserviceCoreAsyncBundle\Response\ParsedResponse;
5+
use Hengebytes\WebserviceCoreAsyncBundle\Cache\CacheManager;
6+
use Hengebytes\WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7+
use Hengebytes\WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8+
use Hengebytes\WebserviceCoreAsyncBundle\Response\AsyncResponse;
9+
use Hengebytes\WebserviceCoreAsyncBundle\Response\CacheResponse;
10+
use Hengebytes\WebserviceCoreAsyncBundle\Response\ParsedResponse;
1111
use Symfony\Component\HttpFoundation\Response;
1212
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
1313

src/Cache/Middleware/Response/ReloadLockedResponseResponseModifier.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?php
22

3-
namespace WebserviceCoreAsyncBundle\Cache\Middleware\Response;
3+
namespace Hengebytes\WebserviceCoreAsyncBundle\Cache\Middleware\Response;
44

5-
use WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
6-
use WebserviceCoreAsyncBundle\Handler\AsyncRequestHandler;
7-
use WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8-
use WebserviceCoreAsyncBundle\Response\AsyncResponse;
9-
use WebserviceCoreAsyncBundle\Response\ParsedResponse;
5+
use Hengebytes\WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
6+
use Hengebytes\WebserviceCoreAsyncBundle\Handler\AsyncRequestHandler;
7+
use Hengebytes\WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8+
use Hengebytes\WebserviceCoreAsyncBundle\Response\AsyncResponse;
9+
use Hengebytes\WebserviceCoreAsyncBundle\Response\ParsedResponse;
1010
use Symfony\Component\HttpFoundation\Response;
1111

1212
readonly class ReloadLockedResponseResponseModifier implements ResponseModificationInterface

src/Cache/Middleware/Response/RequestUnlockResponseModifier.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?php
22

3-
namespace WebserviceCoreAsyncBundle\Cache\Middleware\Response;
3+
namespace Hengebytes\WebserviceCoreAsyncBundle\Cache\Middleware\Response;
44

5-
use WebserviceCoreAsyncBundle\Cache\CacheManager;
6-
use WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7-
use WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8-
use WebserviceCoreAsyncBundle\Response\AsyncResponse;
9-
use WebserviceCoreAsyncBundle\Response\ParsedResponse;
5+
use Hengebytes\WebserviceCoreAsyncBundle\Cache\CacheManager;
6+
use Hengebytes\WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7+
use Hengebytes\WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8+
use Hengebytes\WebserviceCoreAsyncBundle\Response\AsyncResponse;
9+
use Hengebytes\WebserviceCoreAsyncBundle\Response\ParsedResponse;
1010

1111
readonly class RequestUnlockResponseModifier implements ResponseModificationInterface
1212
{

src/Cache/Middleware/Response/StoreToCacheResponseModifier.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?php
22

3-
namespace WebserviceCoreAsyncBundle\Cache\Middleware\Response;
3+
namespace Hengebytes\WebserviceCoreAsyncBundle\Cache\Middleware\Response;
44

5-
use WebserviceCoreAsyncBundle\Cache\CacheManager;
6-
use WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7-
use WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8-
use WebserviceCoreAsyncBundle\Response\AsyncResponse;
9-
use WebserviceCoreAsyncBundle\Response\ParsedResponse;
5+
use Hengebytes\WebserviceCoreAsyncBundle\Cache\CacheManager;
6+
use Hengebytes\WebserviceCoreAsyncBundle\Callback\OnResponseReceivedCallback;
7+
use Hengebytes\WebserviceCoreAsyncBundle\Middleware\ResponseModificationInterface;
8+
use Hengebytes\WebserviceCoreAsyncBundle\Response\AsyncResponse;
9+
use Hengebytes\WebserviceCoreAsyncBundle\Response\ParsedResponse;
1010
use Symfony\Component\HttpFoundation\Response;
1111

1212
readonly class StoreToCacheResponseModifier implements ResponseModificationInterface

src/Callback/OnResponseReceivedCallback.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?php
22

3-
namespace WebserviceCoreAsyncBundle\Callback;
3+
namespace Hengebytes\WebserviceCoreAsyncBundle\Callback;
44

5-
use WebserviceCoreAsyncBundle\Response\ParsedResponse;
5+
use Hengebytes\WebserviceCoreAsyncBundle\Response\ParsedResponse;
66

77
readonly class OnResponseReceivedCallback
88
{

0 commit comments

Comments
 (0)