@@ -104,31 +104,45 @@ public function process(ProceedingJoinPoint $proceedingJoinPoint)
104104 $ options ['headers ' ] = array_replace ($ options ['headers ' ] ?? [], $ appendHeaders );
105105 $ proceedingJoinPoint ->arguments ['keys ' ]['options ' ] = $ options ;
106106
107+ $ this ->appendCustomSpan ($ span , $ options );
108+
107109 /** @var PromiseInterface $result */
108110 $ result = $ proceedingJoinPoint ->process ();
109111 $ result ->then (
110- $ this ->onFullFilled ($ span ),
111- $ this ->onRejected ($ span )
112+ $ this ->onFullFilled ($ span, $ options ),
113+ $ this ->onRejected ($ span, $ options )
112114 );
113115 $ span ->finish ();
114116
115117 return $ result ;
116118 }
117119
118- private function onFullFilled (Span $ span ): callable
120+ protected function appendCustomSpan (Span $ span, array $ options ): void
119121 {
120- return function (ResponseInterface $ response ) use ($ span ) {
122+ // just for override
123+ }
124+
125+ protected function appendCustomResponseSpan (Span $ span , array $ options , ?ResponseInterface $ response ): void
126+ {
127+ // just for override
128+ }
129+
130+ private function onFullFilled (Span $ span , array $ options ): callable
131+ {
132+ return function (ResponseInterface $ response ) use ($ span , $ options ) {
121133 $ span ->setTag (
122134 $ this ->spanTagManager ->get ('http_client ' , 'http.status_code ' ),
123135 $ response ->getStatusCode ()
124136 );
125137 $ span ->setTag ('otel.status_code ' , 'OK ' );
138+
139+ $ this ->appendCustomResponseSpan ($ span , $ options , $ response );
126140 };
127141 }
128142
129- private function onRejected (Span $ span ): callable
143+ private function onRejected (Span $ span, array $ options ): callable
130144 {
131- return function (RequestException $ exception ) use ($ span ) {
145+ return function (RequestException $ exception ) use ($ span, $ options ) {
132146 if ($ this ->switchManager ->isEnabled ('exception ' )) {
133147 $ this ->appendExceptionToSpan ($ span , $ exception );
134148 }
@@ -138,6 +152,8 @@ private function onRejected(Span $span): callable
138152 $ exception ->getResponse ()->getStatusCode ()
139153 );
140154
155+ $ this ->appendCustomResponseSpan ($ span , $ options , $ exception ->getResponse ());
156+
141157 return Create::rejectionFor ($ exception );
142158 };
143159 }
0 commit comments