77use Psr \Http \Message \RequestInterface ;
88use Psr \Http \Message \ResponseInterface ;
99use Upstash \Vector \Contracts \TransporterInterface ;
10- use Upstash \Vector \Telemetry \ SdkTelemetryReporter ;
10+ use Upstash \Vector \Contracts \ TransporterPluginInterface ;
1111
1212/**
1313 * @internal
1616{
1717 private Uri $ uri ;
1818
19+ /**
20+ * @param TransporterPluginInterface[] $plugins
21+ */
1922 public function __construct (
2023 private ClientInterface $ client ,
2124 BaseUri $ baseUri ,
2225 private Headers $ headers = new Headers ,
26+ private array $ plugins = [],
2327 ) {
2428 $ this ->uri = new Uri ($ baseUri );
2529 }
@@ -43,6 +47,11 @@ private function transformRequest(TransporterRequest $request): RequestInterface
4347
4448 $ factory = Psr17FactoryDiscovery::findRequestFactory ();
4549
50+ // run expandRequest plugins
51+ foreach ($ this ->plugins as $ plugin ) {
52+ $ request = $ plugin ->expandRequest ($ request );
53+ }
54+
4655 // Create PSR-17 Request
4756 $ psr17Request = $ factory ->createRequest (
4857 $ request ->method ->value ,
@@ -59,9 +68,6 @@ private function transformRequest(TransporterRequest $request): RequestInterface
5968 $ psr17Request = $ psr17Request ->withHeader ($ header , $ value );
6069 }
6170
62- // Add Telemetry Headers
63- $ psr17Request = $ this ->addTelemetryHeaders ($ psr17Request );
64-
6571 // Add Content type
6672 $ psr17Request = $ psr17Request ->withHeader ('Content-Type ' , $ request ->contentType ->value );
6773
@@ -90,10 +96,4 @@ private function transformResponse(ResponseInterface $response): TransporterResp
9096 data: $ response ->getBody ()->getContents (),
9197 );
9298 }
93-
94- private function addTelemetryHeaders (RequestInterface $ psr17Request ): RequestInterface
95- {
96- return (new SdkTelemetryReporter )
97- ->appendHeaders ($ psr17Request );
98- }
9999}
0 commit comments