package nats_transport import ( "errors" "fmt" "io/ioutil" "net/http" ) func (r *Request) FromHTTP(req *http.Request) error { if req == nil { return errors.New("nats_transport: request cannot be nil") } if req.Body == nil { r.Body = make([]byte, 0) } else { defer req.Body.Close() buf, err := ioutil.ReadAll(req.Body) if err != nil { return fmt.Errorf("nats_transport: cannot read request body: %v", err) } r.Body = buf } r.Proto = req.Proto r.Scheme = req.URL.Scheme r.Host = req.Host r.URL = req.URL.String() r.Method = req.Method r.Header = copyMap(req.Header) r.RemoteAddr = req.RemoteAddr return nil } func NewRequest() *Request { return &Request{ Header: make(map[string]*Values), Body: make([]byte, 0), } }