package runtime import ( "bytes" "context" "io/ioutil" "net/http" "net/url" ) type HTTP struct { URL *url.URL httpClient *http.Client } func (h *HTTP) Execute(ctx context.Context, req Request) (Response, error) { body := bytes.NewReader(req.Payload) r, err := http.NewRequest(http.MethodPost, h.URL.String(), body) if err != nil { return Response{}, err } r = r.WithContext(ctx) res, err := h.httpClient.Do(r) if err != nil { return Response{}, err } defer res.Body.Close() respBody, err := ioutil.ReadAll(res.Body) if err != nil { return Response{}, err } return Response{Payload: respBody}, nil }