This package helps to propagate initial event data to other backend services Laravel Bridge
You can install the package via composer:
composer require ensi/initial-event-propagation
Laravel IEP | PHP |
---|---|
^0.1.0 | ^8.0 |
^0.2.0 | ^8.0 |
^0.3.0 | ^8.1 |
First of all you need to create initial event data and place it to holder:
use Ensi\InitialEventPropagation\InitialEventHolder;
use Ensi\InitialEventPropagation\InitialEventDTO;
InitialEventHolder::getInstance()
->setInitialEvent(
InitialEventDTO::fromScratch(
userId: "1",
userType: "admin",
app: "mobile-api-gateway",
entrypoint: "/api/v1/users/{id}"
)
);
If you are not in initial entrypoint context to need to get initial event from X-Initial-Event
request header instead of creating it from scratch:
use Ensi\InitialEventPropagation\Config;
use Ensi\InitialEventPropagation\InitialEventHolder;
use Ensi\InitialEventPropagation\InitialEventDTO;
InitialEventHolder::getInstance()
->setInitialEvent(
InitialEventDTO::fromSerializedString($request->header(Config::REQUEST_HEADER))
);
Next, extract DTO from holder (InitialEventHolder::getInstance()->getInitialEvent()
) and pass it to any futher outcomming requests (Guzzle, RabbitMQ, Kafka etc)
For example:
use Ensi\InitialEventPropagation\Config;
use Ensi\InitialEventPropagation\InitialEventHolder;
function some_middleware(callable $handler)
{
return function (RequestInterface $request, $options) use ($handler) {
$inititiator = InitialEventHolder::getInstance()->getInitialEvent();
return $handler(
$inititiator ? $request->withHeader(Config::REQUEST_HEADER, $inititiator->serialize()) : $request,
$options
);
};
}
Please see CONTRIBUTING for details.
- composer install
- composer test
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.