func (m requestTreeMiddleware) ProcessServerRequest(req mercury.Request) (mercury.Request, mercury.Response) { req.SetContext(context.WithValue(req.Context(), reqIdCtxKey, req.Id())) if v := req.Headers()[parentIdHeader]; v != "" { req.SetContext(context.WithValue(req.Context(), parentIdCtxKey, v)) } // Set the current service and endpoint into the context req.SetContext(context.WithValue(req.Context(), currentServiceHeader, req.Service())) req.SetContext(context.WithValue(req.Context(), currentEndpointHeader, req.Endpoint())) // Set the originator into the context req.SetContext(context.WithValue(req.Context(), originServiceHeader, req.Headers()[originServiceHeader])) req.SetContext(context.WithValue(req.Context(), originEndpointHeader, req.Headers()[originEndpointHeader])) return req, nil }
func old2NewRequest(oldReq mercury.Request) typhon.Request { ep := oldReq.Endpoint() if !strings.HasPrefix(ep, "/") { ep = "/" + ep } v := typhon.Request{ Context: oldReq.Context(), Request: http.Request{ Method: "POST", URL: &url.URL{ Scheme: "http", Host: oldReq.Service(), Path: ep}, Proto: "HTTP/1.1", ProtoMajor: 1, ProtoMinor: 1, Header: toHeader(oldReq.Headers()), Host: oldReq.Service(), Body: ioutil.NopCloser(bytes.NewReader(oldReq.Payload())), ContentLength: int64(len(oldReq.Payload()))}} v.Header.Set(legacyIdHeader, oldReq.Id()) return v }