Skip to content

Commit

Permalink
Merge 8d43997 into 2f1fd27
Browse files Browse the repository at this point in the history
  • Loading branch information
witochandra committed Nov 8, 2020
2 parents 2f1fd27 + 8d43997 commit 7cd50b8
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 10 deletions.
27 changes: 17 additions & 10 deletions httpclient/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,9 @@ func (c *Client) AddPlugin(p heimdall.Plugin) {

// Get makes a HTTP GET request to provided URL
func (c *Client) Get(url string, headers http.Header) (*http.Response, error) {
var response *http.Response
request, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return response, errors.Wrap(err, "GET - request creation failed")
return nil, errors.Wrap(err, "GET - request creation failed")
}

request.Header = headers
Expand All @@ -70,10 +69,9 @@ func (c *Client) Get(url string, headers http.Header) (*http.Response, error) {

// Post makes a HTTP POST request to provided URL and requestBody
func (c *Client) Post(url string, body io.Reader, headers http.Header) (*http.Response, error) {
var response *http.Response
request, err := http.NewRequest(http.MethodPost, url, body)
if err != nil {
return response, errors.Wrap(err, "POST - request creation failed")
return nil, errors.Wrap(err, "POST - request creation failed")
}

request.Header = headers
Expand All @@ -83,10 +81,9 @@ func (c *Client) Post(url string, body io.Reader, headers http.Header) (*http.Re

// Put makes a HTTP PUT request to provided URL and requestBody
func (c *Client) Put(url string, body io.Reader, headers http.Header) (*http.Response, error) {
var response *http.Response
request, err := http.NewRequest(http.MethodPut, url, body)
if err != nil {
return response, errors.Wrap(err, "PUT - request creation failed")
return nil, errors.Wrap(err, "PUT - request creation failed")
}

request.Header = headers
Expand All @@ -96,10 +93,9 @@ func (c *Client) Put(url string, body io.Reader, headers http.Header) (*http.Res

// Patch makes a HTTP PATCH request to provided URL and requestBody
func (c *Client) Patch(url string, body io.Reader, headers http.Header) (*http.Response, error) {
var response *http.Response
request, err := http.NewRequest(http.MethodPatch, url, body)
if err != nil {
return response, errors.Wrap(err, "PATCH - request creation failed")
return nil, errors.Wrap(err, "PATCH - request creation failed")
}

request.Header = headers
Expand All @@ -109,10 +105,21 @@ func (c *Client) Patch(url string, body io.Reader, headers http.Header) (*http.R

// Delete makes a HTTP DELETE request with provided URL
func (c *Client) Delete(url string, headers http.Header) (*http.Response, error) {
var response *http.Response
request, err := http.NewRequest(http.MethodDelete, url, nil)
if err != nil {
return response, errors.Wrap(err, "DELETE - request creation failed")
return nil, errors.Wrap(err, "DELETE - request creation failed")
}

request.Header = headers

return c.Do(request)
}

// Head makes a HTTP HEAD request with provided URL
func (c *Client) Head(url string, headers http.Header) (*http.Response, error) {
request, err := http.NewRequest(http.MethodHead, url, nil)
if err != nil {
return nil, errors.Wrap(err, "HEAD - request creation failed")
}

request.Header = headers
Expand Down
25 changes: 25 additions & 0 deletions httpclient/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,31 @@ func TestHTTPClientDeleteSuccess(t *testing.T) {
assert.Equal(t, "{ \"response\": \"ok\" }", respBody(t, response))
}

func TestHTTPClientHeadSuccess(t *testing.T) {
client := NewClient(WithHTTPTimeout(10 * time.Millisecond))

dummyHandler := func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodHead, r.Method)
assert.Equal(t, "application/json", r.Header.Get("Content-Type"))
assert.Equal(t, "en", r.Header.Get("Accept-Language"))

w.Header().Add("x-foo", "bar")
w.WriteHeader(http.StatusOK)
}

server := httptest.NewServer(http.HandlerFunc(dummyHandler))
defer server.Close()

headers := http.Header{}
headers.Set("Content-Type", "application/json")
headers.Set("Accept-Language", "en")

response, err := client.Head(server.URL, headers)
require.NoError(t, err, "should not have failed to make a HEAD request")
assert.Equal(t, "bar", response.Header.Get("x-foo"))
assert.Equal(t, http.StatusOK, response.StatusCode)
}

func TestHTTPClientPutSuccess(t *testing.T) {
client := NewClient(WithHTTPTimeout(10 * time.Millisecond))

Expand Down

0 comments on commit 7cd50b8

Please sign in to comment.