45 lines
764 B
Go
45 lines
764 B
Go
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),
|
|
}
|
|
}
|