3 Commits

Author SHA1 Message Date
f5ff99a2a8 ParseJsonResponse returns error based on status code 2025-02-02 20:02:13 +01:00
d144bb5a47 Update go.mod 2024-12-16 19:43:10 +01:00
0b3e33c392 removed err value 2024-09-11 19:19:00 +02:00
4 changed files with 26 additions and 7 deletions

23
do.go
View File

@ -2,6 +2,7 @@ package ezhttp
import (
"encoding/json"
"fmt"
"io"
"net/http"
)
@ -10,10 +11,28 @@ func Do(req *http.Request) (*http.Response, error) {
return http.DefaultClient.Do(req)
}
func ParseJsonResponse[T any](r io.Reader) (*T, error) {
func ParseJsonResponse[T any](resp *http.Response) (*T, error) {
if resp.StatusCode/100 == 2 {
return nil, fmt.Errorf(
"request '%s' returned status code %s\nOutput: %s",
resp.Request.URL.String(),
resp.Status,
ReadAllString(resp.Body),
)
}
res := new(T)
if err := json.NewDecoder(r).Decode(res); err != nil {
if err := json.NewDecoder(resp.Body).Decode(res); err != nil {
return nil, err
}
return res, nil
}
func ReadAllString(r io.Reader) string {
data, err := io.ReadAll(r)
if err != nil {
return fmt.Errorf("could not read response body: %w", err).Error()
}
return string(data)
}

2
go.mod
View File

@ -1,3 +1,3 @@
module git.milar.in/milarin/ezhttp
module git.tordarus.net/tordarus/ezhttp
go 1.23.0

View File

@ -15,7 +15,7 @@ type ValueProvider[T any] func() T
type AuthProvider ValueProvider[string]
type RequestBodyProvider func() (io.Reader, string)
func Request(mods ...RequestModifier) (*http.Request, error) {
func Request(mods ...RequestModifier) *http.Request {
r := NewRequestBuilder()
for _, mod := range mods {
r = mod(r)

View File

@ -30,12 +30,12 @@ func NewRequestBuilderFromRequest(r *http.Request) *RequestBuilder {
}
}
func (b *RequestBuilder) Build() (*http.Request, error) {
func (b *RequestBuilder) Build() *http.Request {
r, err := http.NewRequest(b.Method, b.URL.String(), b.Body)
if err != nil {
return nil, err
return nil
}
r.Header = b.Header
return r, nil
return r
}