66use Illuminate \Http \Request ;
77use OpenTelemetry \API \Trace \SpanInterface ;
88use OpenTelemetry \API \Trace \StatusCode ;
9- use OpenTelemetry \Context \Context ;
10- use OpenTelemetry \Contrib \Propagation \ServerTiming \ServerTimingPropagator ;
11- use OpenTelemetry \Contrib \Propagation \TraceResponse \TraceResponsePropagator ;
129use OpenTelemetry \SemConv \TraceAttributes ;
1310use Overtrue \LaravelOpenTelemetry \Facades \Measure ;
14- use Overtrue \LaravelOpenTelemetry \Support \ResponsePropagationSetter ;
1511use Overtrue \LaravelOpenTelemetry \Traits \InteractWithHttpHeaders ;
1612use Symfony \Component \HttpFoundation \Response ;
1713use Throwable ;
@@ -34,18 +30,12 @@ public function handle(Request $request, Closure $next, ?string $name = null)
3430 );
3531
3632 $ span = Measure::activeSpan ()->setAttributes ($ this ->getRequestSpanAttributes ($ request ));
37- $ context = Context::getCurrent ();
3833
3934 try {
4035 $ response = $ next ($ request );
4136
4237 $ this ->recordHeaders ($ span , $ request );
4338
44- if ($ response instanceof Response) {
45- $ this ->recordHttpResponseToSpan ($ span , $ response );
46- $ this ->propagateHeaderToResponse ($ context , $ response );
47- }
48-
4939 // Add trace id to response header if configured.
5040 if ($ traceIdHeaderName = config ('otel.response_trace_header_name ' )) {
5141 $ response ->headers ->set ($ traceIdHeaderName , Measure::traceId ());
@@ -60,41 +50,6 @@ public function handle(Request $request, Closure $next, ?string $name = null)
6050 }
6151 }
6252
63- protected function recordHttpResponseToSpan (SpanInterface $ span , Response $ response ): void
64- {
65- $ span ->setAttribute (TraceAttributes::NETWORK_PROTOCOL_VERSION , $ response ->getProtocolVersion ());
66- $ span ->setAttribute (TraceAttributes::HTTP_RESPONSE_STATUS_CODE , $ response ->getStatusCode ());
67-
68- if (($ content = $ response ->getContent ()) !== false ) {
69- $ span ->setAttribute (TraceAttributes::HTTP_RESPONSE_BODY_SIZE , strlen ($ content ));
70- }
71-
72- $ this ->recordHeaders ($ span , $ response );
73-
74- if ($ response ->isSuccessful ()) {
75- $ span ->setStatus (StatusCode::STATUS_OK );
76- }
77-
78- if ($ response ->isServerError () || $ response ->isClientError ()) {
79- $ span ->setStatus (StatusCode::STATUS_ERROR );
80- }
81- }
82-
83- protected function propagateHeaderToResponse ($ context , Response $ response ): void
84- {
85- // Propagate `server-timing` header to response, if ServerTimingPropagator is present
86- if (class_exists ('OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator ' )) {
87- $ prop = new ServerTimingPropagator ();
88- $ prop ->inject ($ response , ResponsePropagationSetter::instance (), $ context );
89- }
90-
91- // Propagate `traceresponse` header to response, if TraceResponsePropagator is present
92- if (class_exists ('OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator ' )) {
93- $ prop = new TraceResponsePropagator ();
94- $ prop ->inject ($ response , ResponsePropagationSetter::instance (), $ context );
95- }
96- }
97-
9853 protected function recordHeaders (SpanInterface $ span , Request |Response $ http ): SpanInterface
9954 {
10055 $ prefix = match (true ) {
0 commit comments