| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package internal
- import (
- "net/http"
- "github.com/newrelic/go-agent/internal/cat"
- )
- // InboundHTTPRequest adds the inbound request metadata to the TxnCrossProcess.
- func (txp *TxnCrossProcess) InboundHTTPRequest(hdr http.Header) error {
- return txp.handleInboundRequestHeaders(HTTPHeaderToMetadata(hdr))
- }
- // AppDataToHTTPHeader encapsulates the given appData value in the correct HTTP
- // header.
- func AppDataToHTTPHeader(appData string) http.Header {
- header := http.Header{}
- if appData != "" {
- header.Add(cat.NewRelicAppDataName, appData)
- }
- return header
- }
- // HTTPHeaderToAppData gets the appData value from the correct HTTP header.
- func HTTPHeaderToAppData(header http.Header) string {
- if header == nil {
- return ""
- }
- return header.Get(cat.NewRelicAppDataName)
- }
- // HTTPHeaderToMetadata gets the cross process metadata from the relevant HTTP
- // headers.
- func HTTPHeaderToMetadata(header http.Header) CrossProcessMetadata {
- if header == nil {
- return CrossProcessMetadata{}
- }
- return CrossProcessMetadata{
- ID: header.Get(cat.NewRelicIDName),
- TxnData: header.Get(cat.NewRelicTxnName),
- Synthetics: header.Get(cat.NewRelicSyntheticsName),
- }
- }
- // MetadataToHTTPHeader creates a set of HTTP headers to represent the given
- // cross process metadata.
- func MetadataToHTTPHeader(metadata CrossProcessMetadata) http.Header {
- header := http.Header{}
- if metadata.ID != "" {
- header.Add(cat.NewRelicIDName, metadata.ID)
- }
- if metadata.TxnData != "" {
- header.Add(cat.NewRelicTxnName, metadata.TxnData)
- }
- if metadata.Synthetics != "" {
- header.Add(cat.NewRelicSyntheticsName, metadata.Synthetics)
- }
- return header
- }
|