func fasthttpToNetHTTPRequest()

in xray/fasthttp.go [58:88]


func fasthttpToNetHTTPRequest(ctx *fasthttp.RequestCtx) (*http.Request, error) {
	requestURI := string(ctx.RequestURI())
	rURL, err := url.ParseRequestURI(requestURI)
	if err != nil {
		return nil, fmt.Errorf("cannot parse requestURI %q: %s", requestURI, err)
	}

	req := &http.Request{
		URL:        rURL,
		Host:       string(ctx.Host()),
		RequestURI: requestURI,
		Method:     string(ctx.Method()),
		RemoteAddr: ctx.RemoteAddr().String(),
	}

	hdr := make(http.Header)
	ctx.Request.Header.VisitAll(func(k, v []byte) {
		sk := string(k)
		sv := string(v)
		switch sk {
		case "Transfer-Encoding":
			req.TransferEncoding = append(req.TransferEncoding, sv)
		default:
			hdr.Set(sk, sv)
		}
	})

	req.Header = hdr
	req.TLS = ctx.TLSConnectionState()
	return req, nil
}