in lib/http.go [635:675]
func makeRequestBody(max int64, args ...ref.Val) (map[string]interface{}, ref.Val) {
if len(args) < 2 {
return nil, types.NewErr("no such overload for request")
}
method, ok := args[0].(types.String)
if !ok {
return nil, types.ValOrErr(method, "no such overload for request")
}
url, ok := args[1].(types.String)
if !ok {
return nil, types.ValOrErr(method, "no such overload for request")
}
var (
body ref.Val
bodyReader io.Reader
)
if len(args) == 3 {
body = args[2]
switch body := body.(type) {
case types.Bytes:
if len(body) != 0 {
bodyReader = bytes.NewReader(body)
}
case types.String:
if body != "" {
bodyReader = strings.NewReader(string(body))
}
default:
return nil, types.NewErr("invalid type for request body: %s", body.Type())
}
}
req, err := http.NewRequest(string(method), string(url), bodyReader)
if err != nil {
return nil, types.NewErr("%s", err)
}
reqMap, err := reqToMap(req, url, body, max)
if err != nil {
return nil, types.NewErr("%s", err)
}
return reqMap, nil
}