func makeRequestBody()

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
}