diff --git a/internal/client/get.go b/internal/client/get.go index 3903bc6..9396a8a 100644 --- a/internal/client/get.go +++ b/internal/client/get.go @@ -9,5 +9,5 @@ import ( //GetData will perform the request and write the results on the provided writer func GetData(host, id, path string, wr io.Writer) error { url := host + "/handlers/" + id + path - return http.Do("GET", url, nil, wr) + return http.Get(url, nil, wr) } diff --git a/internal/http/request.go b/internal/http/request.go index ee3499d..1b6fcc0 100644 --- a/internal/http/request.go +++ b/internal/http/request.go @@ -7,13 +7,33 @@ import ( "net/http" ) -var devnull io.Writer = ioutil.Discard +//Get perform a request using Request with the GET method +func Get(url string, r io.Reader, w io.Writer) error { + return Request("GET", url, r, w) +} -//Do will perform the request to the given url and method sending the +//Post perform a request using Request with the POST method +func Post(url string, r io.Reader, w io.Writer) error { + return Request("POST", url, r, w) +} + +//Put perform a request using Request with the PUT method +func Put(url string, r io.Reader, w io.Writer) error { + return Request("PUT", url, r, w) +} + +//Delete perform a request using Request with the DELETE method +func Delete(url string, r io.Reader, w io.Writer) error { + return Request("DELETE", url, r, w) +} + +var devnull = ioutil.Discard + +//Request will perform the request to the given url and method sending the //content of the given reader as the body and writing all the contents //of the response to the given writer. The reader and writer are //optional. -func Do(method string, url string, r io.Reader, w io.Writer) error { +func Request(method string, url string, r io.Reader, w io.Writer) error { req, err := http.NewRequest(method, url, r) if err != nil { return err diff --git a/internal/http/request_test.go b/internal/http/request_test.go index 30cdf93..a255808 100644 --- a/internal/http/request_test.go +++ b/internal/http/request_test.go @@ -13,7 +13,7 @@ func TestReturnErrorOnInvalidURL(t *testing.T) { defer gock.Off() gock.New("").Reply(200) - err := Do("GET", "://", nil, nil) + err := Request("GET", "://", nil, nil) if err == nil { t.Errorf("Expected error not returned") } @@ -29,7 +29,7 @@ func TestRequestGivenMethod(t *testing.T) { mock.Method = "FOO" mock.Reply(200) - err := Do("FOO", "http://localhost", nil, nil) + err := Request("FOO", "http://localhost", nil, nil) if err != nil { t.Errorf("Unexpected error on request") } @@ -44,7 +44,7 @@ func TestReturnHTTPErrorAsIs(t *testing.T) { customError := errors.New("FOO") gock.New("http://localhost").ReplyError(customError) - err := Do("GET", "http://localhost", nil, nil) + err := Request("GET", "http://localhost", nil, nil) if errors.Unwrap(err) != customError { t.Errorf("Returned error is not the expected error") } @@ -58,7 +58,7 @@ func TestReturnHTTPReasonAsErrorWhenUnsuccessful(t *testing.T) { defer gock.Off() gock.New("http://localhost").Reply(http.StatusTeapot) - err := Do("GET", "http://localhost", nil, nil) + err := Request("GET", "http://localhost", nil, nil) if err == nil || err.Error() != http.StatusText(http.StatusTeapot) { t.Errorf("Reason should be returned as an error") } @@ -75,7 +75,7 @@ func TestCopyResponseBodyToWriter(t *testing.T) { rw := new(bytes.Buffer) - err := Do("GET", "http://localhost", nil, rw) + err := Request("GET", "http://localhost", nil, rw) if err != nil { t.Errorf("Unexpected error %v", err) } @@ -101,7 +101,7 @@ func TestWriteToDevNullWhenNoWriter(t *testing.T) { defer func() { devnull = original }() - err := Do("GET", "http://localhost", nil, nil) + err := Request("GET", "http://localhost", nil, nil) if err != nil { t.Errorf("Unexpected error %v", err) }