@@ -359,19 +359,66 @@ class YourApi extends Api
359359
360360### Event Listeners
361361
362- - [ ` addPostRequestHandler ` ] ( #addpostrequesthandler )
363- - [ ` addResponseContentsHandler ` ] ( #addresponsecontentshandler )
362+ - [ ` addPreRequestListener ` ] ( #addprerequestlistener )
363+ - [ ` addPostRequestListener ` ] ( #addpostrequestlistener )
364+ - [ ` addResponseContentsListener ` ] ( #addresponsecontentslistener )
364365- [ Event Priority] ( #event-priority )
365366- [ Event Propagation] ( #event-propagation )
366367
367- #### ` addPostRequestHandler `
368+ #### ` addPreRequestListener `
368369
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.
371371This event listener will be applied to every API request.
372372
373373``` 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;
375422```
376423
377424For example, you can use this event listener to handle API errors:
@@ -384,13 +431,8 @@ class YourApi extends Api
384431{
385432 public function __construct()
386433 {
387- // ...
388-
389434 // 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) {
394436 $response = $event->getResponse();
395437 $statusCode = $response->getStatusCode();
396438
@@ -410,13 +452,27 @@ class YourApi extends Api
410452}
411453```
412454
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 `
414470
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.
416472This event listener will be applied to every API request.
417473
418474``` php
419- $this->addResponseContentsHandler (callable $handler, int $priority = 0): self;
475+ $this->addResponseContentsListener (callable $handler, int $priority = 0): self;
420476```
421477
422478For 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
429485{
430486 public function __construct()
431487 {
432- // ...
433-
434488 // a ResponseContentsEvent is passed as an argument
435- $this->addResponseContentsHandler (function(ResponseContentsEvent $event) {
489+ $this->addResponseContentsListener (function(ResponseContentsEvent $event) {
436490 // get response contents and decode json string into an array
437491 $contents = $event->getContents();
438492 $contents = json_decode($contents, true);
@@ -453,6 +507,18 @@ class YourApi extends Api
453507}
454508```
455509
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+
456522#### Event Priority
457523
458524It 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
471537 // but the second is executed first (higher priority) even though it was added after
472538
473539 // executed last (lower priority)
474- $this->addResponseContentsHandler (
475- handler : function(PostRequestEvent $event) { ... },
540+ $this->addResponseContentsListener (
541+ listener : function(PostRequestEvent $event) { ... },
476542 priority: 0
477543 );
478544
479545 // executed first (higher priority)
480- $this->addResponseContentsHandler (
481- handler : function(PostRequestEvent $event) { ... },
546+ $this->addResponseContentsListener (
547+ listener : function(PostRequestEvent $event) { ... },
482548 priority: 10
483549 );
484550 }
@@ -498,13 +564,13 @@ class YourApi extends Api
498564{
499565 public function __construct()
500566 {
501- $this->addResponseContentsHandler (function(PostRequestEvent $event) {
567+ $this->addResponseContentsListener (function(PostRequestEvent $event) {
502568 // stop propagation so future listeners of this event will not be called
503569 $event->stopPropagation();
504570 });
505571
506572 // this listener will not be called
507- $this->addResponseContentsHandler (function(PostRequestEvent $event) {
573+ $this->addResponseContentsListener (function(PostRequestEvent $event) {
508574 // ...
509575 });
510576 }
@@ -682,7 +748,7 @@ class YourApi extends Api
682748 $pool = new FilesystemAdapter();
683749
684750 // file-based cache adapter with a 1-hour default cache lifetime
685- $this->setClientBuilder (
751+ $this->setCacheBuilder (
686752 new CacheBuilder(
687753 pool: $pool,
688754 ttl: 3600
0 commit comments