MCPcopy
hub / github.com/grpc-ecosystem/grpc-gateway / setBody

Function setBody

examples/internal/clients/unannotatedecho/client.go:341–369  ·  view source on GitHub ↗

Set request body from an interface{}

(body interface{}, contentType string)

Source from the content-addressed store, hash-verified

339
340// Set request body from an interface{}
341func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) {
342 if bodyBuf == nil {
343 bodyBuf = &bytes.Buffer{}
344 }
345
346 if reader, ok := body.(io.Reader); ok {
347 _, err = bodyBuf.ReadFrom(reader)
348 } else if b, ok := body.([]byte); ok {
349 _, err = bodyBuf.Write(b)
350 } else if s, ok := body.(string); ok {
351 _, err = bodyBuf.WriteString(s)
352 } else if s, ok := body.(*string); ok {
353 _, err = bodyBuf.WriteString(*s)
354 } else if jsonCheck.MatchString(contentType) {
355 err = json.NewEncoder(bodyBuf).Encode(body)
356 } else if xmlCheck.MatchString(contentType) {
357 xml.NewEncoder(bodyBuf).Encode(body)
358 }
359
360 if err != nil {
361 return nil, err
362 }
363
364 if bodyBuf.Len() == 0 {
365 err = fmt.Errorf("Invalid body type %s\n", contentType)
366 return nil, err
367 }
368 return bodyBuf, nil
369}
370
371// detectContentType method is used to figure out `Request.Body` content type for request header
372func detectContentType(body interface{}) string {

Callers 1

prepareRequestMethod · 0.70

Calls 3

LenMethod · 0.80
EncodeMethod · 0.65
NewEncoderMethod · 0.65

Tested by

no test coverage detected