github.com/storacha/go-ucanto@v0.7.2/transport/headercar/request/request.go (about) 1 package request 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/storacha/go-ucanto/core/message" 8 "github.com/storacha/go-ucanto/transport" 9 hcmsg "github.com/storacha/go-ucanto/transport/headercar/message" 10 uhttp "github.com/storacha/go-ucanto/transport/http" 11 ) 12 13 func Encode(msg message.AgentMessage) (transport.HTTPRequest, error) { 14 xAgentMsg, err := hcmsg.EncodeHeader(msg) 15 if err != nil { 16 return nil, fmt.Errorf("encoding %s header: %w", hcmsg.HeaderName, err) 17 } 18 headers := http.Header{} 19 headers.Set(hcmsg.HeaderName, xAgentMsg) 20 return uhttp.NewRequest(nil, headers), nil 21 } 22 23 func Decode(req transport.HTTPRequest) (message.AgentMessage, error) { 24 msgHdr := req.Headers().Get(hcmsg.HeaderName) 25 if msgHdr == "" { 26 return nil, fmt.Errorf("missing %s header in request", hcmsg.HeaderName) 27 } 28 return hcmsg.DecodeHeader(msgHdr) 29 }