Skip to content

Instantly share code, notes, and snippets.

@cyx
Created November 28, 2020 00:55
Show Gist options
  • Save cyx/e112aed5126ecfa1691a45362c76e4b0 to your computer and use it in GitHub Desktop.
Save cyx/e112aed5126ecfa1691a45362c76e4b0 to your computer and use it in GitHub Desktop.
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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment