github.com/storacha/go-ucanto@v0.7.2/transport/headercar/response/response.go (about)

     1  package response
     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.HTTPResponse, 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.NewResponse(http.StatusOK, nil, headers), nil
    21  }
    22  
    23  func Decode(response transport.HTTPResponse) (message.AgentMessage, error) {
    24  	msgHdr := response.Headers().Get(hcmsg.HeaderName)
    25  	if msgHdr == "" {
    26  		return nil, fmt.Errorf("missing %s header in response", hcmsg.HeaderName)
    27  	}
    28  	return hcmsg.DecodeHeader(msgHdr)
    29  }