gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

marshal_httpbodyproto.go (1084B)


      1 package runtime
      2 
      3 import (
      4 	"google.golang.org/genproto/googleapis/api/httpbody"
      5 )
      6 
      7 // HTTPBodyMarshaler is a Marshaler which supports marshaling of a
      8 // google.api.HttpBody message as the full response body if it is
      9 // the actual message used as the response. If not, then this will
     10 // simply fallback to the Marshaler specified as its default Marshaler.
     11 type HTTPBodyMarshaler struct {
     12 	Marshaler
     13 }
     14 
     15 // ContentType returns its specified content type in case v is a
     16 // google.api.HttpBody message, otherwise it will fall back to the default Marshalers
     17 // content type.
     18 func (h *HTTPBodyMarshaler) ContentType(v interface{}) string {
     19 	if httpBody, ok := v.(*httpbody.HttpBody); ok {
     20 		return httpBody.GetContentType()
     21 	}
     22 	return h.Marshaler.ContentType(v)
     23 }
     24 
     25 // Marshal marshals "v" by returning the body bytes if v is a
     26 // google.api.HttpBody message, otherwise it falls back to the default Marshaler.
     27 func (h *HTTPBodyMarshaler) Marshal(v interface{}) ([]byte, error) {
     28 	if httpBody, ok := v.(*httpbody.HttpBody); ok {
     29 		return httpBody.Data, nil
     30 	}
     31 	return h.Marshaler.Marshal(v)
     32 }