func()

in context.go [174:226]


func (c *Context) SetHTTPRequest(req *http.Request) {
	// Special cases to avoid calling into fmt.Sprintf in most cases.
	var httpVersion string
	switch {
	case req.ProtoMajor == 1 && req.ProtoMinor == 1:
		httpVersion = "1.1"
	case req.ProtoMajor == 2 && req.ProtoMinor == 0:
		httpVersion = "2.0"
	default:
		httpVersion = fmt.Sprintf("%d.%d", req.ProtoMajor, req.ProtoMinor)
	}

	c.httpRequest = req

	c.request = model.Request{
		Body:        c.request.Body,
		URL:         apmhttputil.RequestURL(req),
		Method:      truncateString(req.Method),
		HTTPVersion: httpVersion,
		Cookies:     req.Cookies(),
	}
	c.model.Request = &c.request

	if c.captureHeaders {
		for k, values := range req.Header {
			if k == "Cookie" {
				// We capture cookies in the request structure.
				continue
			}
			c.request.Headers = append(c.request.Headers, model.Header{
				Key: k, Values: values,
			})
		}
	}

	c.requestSocket = model.RequestSocket{
		RemoteAddress: apmhttputil.RemoteAddr(req),
	}
	if c.requestSocket != (model.RequestSocket{}) {
		c.request.Socket = &c.requestSocket
	}

	if c.model.User == nil {
		username, _, ok := req.BasicAuth()
		if !ok && req.URL.User != nil {
			username = req.URL.User.Username()
		}
		c.user.Username = truncateString(username)
		if c.user.Username != "" {
			c.model.User = &c.user
		}
	}
}