in lib/http.go [789:818]
func (l httpLib) doRequest(arg ref.Val) ref.Val {
request, ok := arg.(traits.Mapper)
if !ok {
return types.ValOrErr(request, "no such overload for do_request")
}
reqm, err := request.ConvertToNative(reflectMapStringAnyType)
if err != nil {
return types.NewErr("%s", err)
}
req, err := mapToReq(reqm.(map[string]interface{}))
if err != nil {
return types.NewErr("%s", err)
}
// Recover the context lost during serialisation to JSON.
req = req.WithContext(l.ctx)
err = l.options.Limiter.Wait(l.ctx)
if err != nil {
return types.NewErr("%s", err)
}
addHeaders(req, l.options.Headers)
resp, err := l.client.Do(req)
if err != nil {
return types.NewErr("%s", err)
}
respm, err := respToMap(resp, l.options.MaxBodySize)
if err != nil {
return types.NewErr("%s", err)
}
return types.DefaultTypeAdapter.NativeToValue(respm)
}