Add interface \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycleModifierInterface to build components, that will be used to modify recorded HTTP request cycles
Add methods \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycleCollector::withAddedModifier, \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycleCollector::withoutModifiers, \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycleCollector::getModifiers to manage \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycleModifierInterface that will be applied when collecting request cycles
Add request cycle modifier class \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Modifier\HeaderValueReplacingModifier to replace header values using RegEx patterns
Add request cycle modifier class \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Modifier\RequestUrlModifier to replace request URL parts using RegEx patterns
Add base class \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Modifier\AbstractBodyModifier to build modifiers depending on the body's mimetype
Add request cycle modifier class \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Modifier\JsonBodyFormattingModifier to format request and response bodies that are of mimetype application/json
Add request cycle modifier class \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Modifier\XmlBodyFormattingModifier to format request and response bodies that are of mimetype application/xml
Add composer suggestion to allow \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Modifier\XmlBodyFormattingModifier to work
Changed
Prevent request URL modification in \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\HttpRequestCycleProfiler, when collector has modifiers assigned
Deprecated
Deprecate expected request URL modification in \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\HttpRequestCycleProfiler. Expect to always add \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Modifier\RequestUrlModifier to collectors
[1.0.0] - 2023-06-10
Added
Add composer dependency heptacom/heptaconnect-portal-base: ^0.9.5 as \Heptacom\HeptaConnect\Package\Http\HttpPackage is a package and HTTP middleware \Heptacom\HeptaConnect\Portal\Base\Web\Http\Contract\HttpClientMiddlewareInterface is used
Add composer dependencies psr/http-client: ^1.0, psr/http-factory: ^1.0 and psr/http-message: ^1.0 || ^2.0 as PSR-7 based HTTP messages are used
Add composer dependencies psr/event-dispatcher: ^1.0, symfony/event-dispatcher: ^5.0 || ^6.0 and symfony/event-dispatcher-contracts: ^2.0 || ^3.0 as events are dispatched
Add composer dependency symfony/dependency-injection: ^5.0 || ^6.0 as compiler passes are used
Add composer dependency symfony/options-resolver: ^5.1 || ^6.0 as unstructured data is validated using the Symfony options resolver
Introduce outbound HTTP cache feature using \Heptacom\HeptaConnect\Package\Http\Components\HttpCache\HttpCache based on \Heptacom\HeptaConnect\Package\Http\Components\HttpCache\Contract\HttpCacheInterface
Add class \Heptacom\HeptaConnect\Package\Http\Components\HttpCache\Psr7MessageSerializer described by \Heptacom\HeptaConnect\Package\Http\Components\HttpCache\Contract\Psr7MessageSerializerInterface to serialize and deserialize PSR-7 messages for storing them in a cache
Add event \Heptacom\HeptaConnect\Package\Http\Components\HttpCache\Contract\Event\HttpCacheActiveEvent to influence, whether a request cycle is cached
Add event \Heptacom\HeptaConnect\Package\Http\Components\HttpCache\Contract\Event\HttpCacheKeyEvent to influence under which cache key a request is cached
Add service tag heptaconnect.http.client.middleware to Heptacom\HeptaConnect\Package\Http\Components\HttpCache\Contract\HttpCacheInterface to ensure it is chained in outgoing HTTP communication
Introduce HTTP request cycle profiling using \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\HttpRequestCycleProfiler based on \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycleProfilerInterface to control, which outgoing request cycles shall be measured and how the measurements will be processed
Add struct \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycleCollector to store \Heptacom\HeptaConnect\Package\Http\Components\HttpRequestCycleProfiling\Contract\HttpRequestCycle for each request in a request cycle measurement
Add \Heptacom\HeptaConnect\Package\Http\DependencyInjection\EventSubscriberTagCompilerPass as class and into the container building to register any \Symfony\Component\EventDispatcher\EventSubscriberInterface as active subscriber
Add service Symfony\Component\EventDispatcher\EventDispatcherInterface for class \Symfony\Component\EventDispatcher\EventDispatcher with aliases event_dispatcher, Symfony\Contracts\EventDispatcher\EventDispatcherInterface and Psr\EventDispatcher\EventDispatcherInterface