dragon-code / request-tracker
Request tracking across microservices
Installs: 26
Dependents: 2
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/dragon-code/request-tracker
Requires
- php: ^8.2
- ramsey/uuid: ^4.9
- symfony/http-foundation: ^7.3
Requires (Dev)
- dragon-code/codestyler: ^6.3
- pestphp/pest: ^3.0 || ^4.0
- pestphp/pest-plugin-type-coverage: ^3.0 || ^4.0
- symfony/var-dumper: ^7.3
README
Request tracking across microservices.
Installation
You can install the Request Tracker package via Composer:
composer require dragon-code/request-tracker
Basic Usage
Using Default Header Names
use DragonCode\RequestTracker\TrackerHeader; use DragonCode\RequestTracker\TrackerRequest; use Symfony\Component\HttpFoundation\Request; /** @var Request $request */ $request = /* ... */; $tracker = new TrackerRequest($request, new TrackerHeader); function tracker(Request $request, ?int $userId = null): Request { return (new TrackerRequest($request, new TrackerHeader)) ->userId($userId) ->ip() ->traceId() ->getRequest(); } // For the first call tracker($request, $user->id); // For subsequent services tracker($request);
Custom Headers
use DragonCode\RequestTracker\TrackerHeader; use DragonCode\RequestTracker\TrackerRequest; use Symfony\Component\HttpFoundation\Request; /** @var Request $request */ $request = /* ... */; $tracker = new TrackerRequest($request, new TrackerHeader); function tracker(Request $request, ?int $userId = null): Request { return (new TrackerRequest($request, new TrackerHeader)) ->userId($userId) ->ip() ->traceId() ->custom('Some-Header', fn (Request $request) => 1234 ->getRequest(); }
$item = tracker($request); return $item->headers->get('Some-Header'); // 1234
$request->headers->set('Some-Header', 'qwerty'); $item = tracker($request); return $item->headers->get('Some-Header'); // qwerty
Custom Header Names
use DragonCode\RequestTracker\TrackerHeader; return new TrackerHeader( userId: 'Some-User-Id', ip: 'Some-IP', traceId: 'Some-Trace-Id', );
License
This package is licensed under the MIT License.