@@ -48,7 +48,10 @@ import (
4848)
4949
5050const (
51- receiverTransport = "http"
51+ receiverTransportV1Thrift = "http_v1_thrift"
52+ receiverTransportV1JSON = "http_v1_json"
53+ receiverTransportV2JSON = "http_v2_json"
54+ receiverTransportV2PROTO = "http_v2_proto"
5255)
5356
5457var errNextConsumerRespBody = []byte (`"Internal Server Error"` )
@@ -310,9 +313,10 @@ func (zr *ZipkinReceiver) ServeHTTP(w http.ResponseWriter, r *http.Request) {
310313 receiverTagValue = zipkinV2TagValue
311314 }
312315
316+ transportTag := transportType (r )
313317 ctx = obsreport .ReceiverContext (
314- ctx , zr .instanceName , receiverTransport , receiverTagValue )
315- ctx = obsreport .StartTraceDataReceiveOp (ctx , zr .instanceName , receiverTransport )
318+ ctx , zr .instanceName , transportTag , receiverTagValue )
319+ ctx = obsreport .StartTraceDataReceiveOp (ctx , zr .instanceName , transportTag )
316320
317321 pr := processBodyIfNecessary (r )
318322 slurp , _ := ioutil .ReadAll (pr )
@@ -619,3 +623,17 @@ func zipkinTagsToTraceAttributes(tags map[string]string, skind zipkinmodel.Kind)
619623
620624 return & tracepb.Span_Attributes {AttributeMap : amap }
621625}
626+
627+ func transportType (r * http.Request ) string {
628+ v1 := r .URL != nil && strings .Contains (r .URL .Path , "api/v1/spans" )
629+ if v1 {
630+ if r .Header .Get ("Content-Type" ) == "application/x-thrift" {
631+ return receiverTransportV1Thrift
632+ }
633+ return receiverTransportV1JSON
634+ }
635+ if r .Header .Get ("Content-Type" ) == "application/x-protobuf" {
636+ return receiverTransportV2PROTO
637+ }
638+ return receiverTransportV2JSON
639+ }
0 commit comments