@@ -359,19 +359,66 @@ class YourApi extends Api
359
359
360
360
### Event Listeners
361
361
362
- - [ ` addPostRequestHandler ` ] ( #addpostrequesthandler )
363
- - [ ` addResponseContentsHandler ` ] ( #addresponsecontentshandler )
362
+ - [ ` addPreRequestListener ` ] ( #addprerequestlistener )
363
+ - [ ` addPostRequestListener ` ] ( #addpostrequestlistener )
364
+ - [ ` addResponseContentsListener ` ] ( #addresponsecontentslistener )
364
365
- [ Event Priority] ( #event-priority )
365
366
- [ Event Propagation] ( #event-propagation )
366
367
367
- #### ` addPostRequestHandler `
368
+ #### ` addPreRequestListener `
368
369
369
- The ` addPostRequestHandler ` method is used to add a handler function that is executed after a request has been made.
370
- This handler function can be used to inspect the request and response data that was sent to, and received from, the API.
370
+ The ` addPreRequestListener ` method is used to add a function that is called before a request, and all handled data, has been made.
371
371
This event listener will be applied to every API request.
372
372
373
373
``` php
374
- $this->addPostRequestHandler(callable $handler, int $priority = 0): self;
374
+ $this->addPreRequestListener(callable $listener, int $priority = 0): self;
375
+ ```
376
+
377
+ For example:
378
+
379
+ ``` php
380
+ use ProgrammatorDev\Api\Api;
381
+ use ProgrammatorDev\Api\Event\PreRequestEvent;
382
+
383
+ class YourApi extends Api
384
+ {
385
+ public function __construct()
386
+ {
387
+ // a PreRequestEvent is passed as an argument
388
+ $this->addPreRequestListener(function(PreRequestEvent $event) {
389
+ $request = $event->getRequest();
390
+
391
+ if ($request->getMethod() === 'POST') {
392
+ // do something for all POST requests
393
+ // ...
394
+ }
395
+ });
396
+ }
397
+
398
+ // ...
399
+ }
400
+ ```
401
+
402
+ Available event methods:
403
+
404
+ ``` php
405
+ $this->addPreRequestListener(function(PreRequestEvent $event) {
406
+ // get request data
407
+ $request = $event->getRequest();
408
+ // ...
409
+ // set request data
410
+ $event->setRequest($request);
411
+ });
412
+ ```
413
+
414
+ #### ` addPostRequestListener `
415
+
416
+ The ` addPostRequestListener ` method is used to add a function that is called after a request has been made.
417
+ This function can be used to inspect the request and response data that was sent to, and received from, the API.
418
+ This event listener will be applied to every API request.
419
+
420
+ ``` php
421
+ $this->addPostRequestListener(callable $listener, int $priority = 0): self;
375
422
```
376
423
377
424
For example, you can use this event listener to handle API errors:
@@ -384,13 +431,8 @@ class YourApi extends Api
384
431
{
385
432
public function __construct()
386
433
{
387
- // ...
388
-
389
434
// a PostRequestEvent is passed as an argument
390
- $this->addPostRequestHandler(function(PostRequestEvent $event) {
391
- // request data is also available
392
- // $request = $event->getRequest();
393
-
435
+ $this->addPostRequestListener(function(PostRequestEvent $event) {
394
436
$response = $event->getResponse();
395
437
$statusCode = $response->getStatusCode();
396
438
@@ -410,13 +452,27 @@ class YourApi extends Api
410
452
}
411
453
```
412
454
413
- #### ` addResponseContentsHandler `
455
+ Available event methods:
456
+
457
+ ``` php
458
+ $this->addPostRequestListener(function(PostRequestEvent $event) {
459
+ // get request data
460
+ $request = $event->getRequest();
461
+ // get response data
462
+ $response = $event->getResponse();
463
+ // ...
464
+ // set response data
465
+ $event->setResponse($response);
466
+ });
467
+ ```
468
+
469
+ #### ` addResponseContentsListener `
414
470
415
- The ` addResponseContentsHandler ` method is used to manipulate the response that was received from the API.
471
+ The ` addResponseContentsListener ` method is used to manipulate the response that was received from the API.
416
472
This event listener will be applied to every API request.
417
473
418
474
``` php
419
- $this->addResponseContentsHandler (callable $handler, int $priority = 0): self;
475
+ $this->addResponseContentsListener (callable $handler, int $priority = 0): self;
420
476
```
421
477
422
478
For example, if the API responses are JSON strings, you can use this event listener to decode them into arrays:
@@ -429,10 +485,8 @@ class YourApi extends Api
429
485
{
430
486
public function __construct()
431
487
{
432
- // ...
433
-
434
488
// a ResponseContentsEvent is passed as an argument
435
- $this->addResponseContentsHandler (function(ResponseContentsEvent $event) {
489
+ $this->addResponseContentsListener (function(ResponseContentsEvent $event) {
436
490
// get response contents and decode json string into an array
437
491
$contents = $event->getContents();
438
492
$contents = json_decode($contents, true);
@@ -453,6 +507,18 @@ class YourApi extends Api
453
507
}
454
508
```
455
509
510
+ Available event methods:
511
+
512
+ ``` php
513
+ $this->addResponseContentsListener(function(ResponseContentsEvent $event) {
514
+ // get response body contents data
515
+ $contents = $event->getContents();
516
+ // ...
517
+ // set contents
518
+ $event->setContents($contents);
519
+ });
520
+ ```
521
+
456
522
#### Event Priority
457
523
458
524
It is possible to add multiple listeners for the same event and set the order in which they will be executed.
@@ -471,14 +537,14 @@ class YourApi extends Api
471
537
// but the second is executed first (higher priority) even though it was added after
472
538
473
539
// executed last (lower priority)
474
- $this->addResponseContentsHandler (
475
- handler : function(PostRequestEvent $event) { ... },
540
+ $this->addResponseContentsListener (
541
+ listener : function(PostRequestEvent $event) { ... },
476
542
priority: 0
477
543
);
478
544
479
545
// executed first (higher priority)
480
- $this->addResponseContentsHandler (
481
- handler : function(PostRequestEvent $event) { ... },
546
+ $this->addResponseContentsListener (
547
+ listener : function(PostRequestEvent $event) { ... },
482
548
priority: 10
483
549
);
484
550
}
@@ -498,13 +564,13 @@ class YourApi extends Api
498
564
{
499
565
public function __construct()
500
566
{
501
- $this->addResponseContentsHandler (function(PostRequestEvent $event) {
567
+ $this->addResponseContentsListener (function(PostRequestEvent $event) {
502
568
// stop propagation so future listeners of this event will not be called
503
569
$event->stopPropagation();
504
570
});
505
571
506
572
// this listener will not be called
507
- $this->addResponseContentsHandler (function(PostRequestEvent $event) {
573
+ $this->addResponseContentsListener (function(PostRequestEvent $event) {
508
574
// ...
509
575
});
510
576
}
@@ -682,7 +748,7 @@ class YourApi extends Api
682
748
$pool = new FilesystemAdapter();
683
749
684
750
// file-based cache adapter with a 1-hour default cache lifetime
685
- $this->setClientBuilder (
751
+ $this->setCacheBuilder (
686
752
new CacheBuilder(
687
753
pool: $pool,
688
754
ttl: 3600
0 commit comments