29 lines
495 B
Go
29 lines
495 B
Go
package httpclient
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
func encodeBody(data any) (r io.Reader, contentType string, err error) {
|
|
var (
|
|
buf []byte
|
|
)
|
|
switch v := data.(type) {
|
|
case string:
|
|
r = strings.NewReader(v)
|
|
contentType = "x-www-form-urlencoded"
|
|
case []byte:
|
|
r = bytes.NewReader(v)
|
|
contentType = "x-www-form-urlencoded"
|
|
default:
|
|
if buf, err = json.Marshal(v); err == nil {
|
|
r = bytes.NewReader(buf)
|
|
contentType = "application/json"
|
|
}
|
|
}
|
|
return
|
|
}
|