Something went wrong on our end
Select Git revision
runnable-http.go
-
Volker Schukai authoredVolker Schukai authored
runnable-http.go 1023 B
package jobqueue
import (
"bytes"
"io"
"net/http"
)
// HTTPResult is a result of a http request
type HTTPResult struct {
StatusCode int
Body string
}
type HTTPRunnable struct {
URL string
Method string
Header map[string]string
Body string
}
func (h *HTTPRunnable) Run() (RunResult[HTTPResult], error) {
client := &http.Client{}
reqBody := bytes.NewBufferString(h.Body)
req, err := http.NewRequest(h.Method, h.URL, reqBody)
if err != nil {
return RunResult[HTTPResult]{Status: ResultStatusFailed}, err
}
for key, value := range h.Header {
req.Header.Set(key, value)
}
resp, err := client.Do(req)
if err != nil {
return RunResult[HTTPResult]{Status: ResultStatusFailed}, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return RunResult[HTTPResult]{Status: ResultStatusFailed}, err
}
return RunResult[HTTPResult]{
Status: ResultStatusSuccess,
Data: HTTPResult{
StatusCode: resp.StatusCode,
Body: string(body),
},
}, nil
}