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

Function setBody

examples/internal/clients/abe/client.go:350–378  ·  view source on GitHub ↗

Set request body from an interface{}

(body interface{}, contentType string)

Source from the content-addressed store, hash-verified

348
349// Set request body from an interface{}
350func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) {
351 if bodyBuf == nil {
352 bodyBuf = &bytes.Buffer{}
353 }
354
355 if reader, ok := body.(io.Reader); ok {
356 _, err = bodyBuf.ReadFrom(reader)
357 } else if b, ok := body.([]byte); ok {
358 _, err = bodyBuf.Write(b)
359 } else if s, ok := body.(string); ok {
360 _, err = bodyBuf.WriteString(s)
361 } else if s, ok := body.(*string); ok {
362 _, err = bodyBuf.WriteString(*s)
363 } else if jsonCheck.MatchString(contentType) {
364 err = json.NewEncoder(bodyBuf).Encode(body)
365 } else if xmlCheck.MatchString(contentType) {
366 xml.NewEncoder(bodyBuf).Encode(body)
367 }
368
369 if err != nil {
370 return nil, err
371 }
372
373 if bodyBuf.Len() == 0 {
374 err = fmt.Errorf("Invalid body type %s\n", contentType)
375 return nil, err
376 }
377 return bodyBuf, nil
378}
379
380// detectContentType method is used to figure out `Request.Body` content type for request header
381func 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