package simple_http import ( "io/ioutil" "log" "net/http" "net/url" "strings" ) type Client struct { HttpClient http.Client } func (c *Client) getResponseBody(resp *http.Response) ([]byte, error) { body, read_err := ioutil.ReadAll(resp.Body) if read_err != nil { log.Fatal(read_err) return nil, read_err } return body, nil } func (c *Client) MakeGetRequest(url string, params *url.Values, headers *map[string]string) ([]byte, error) { var body []byte if params != nil { url += "?" + params.Encode() } req, req_err := http.NewRequest("GET", url, nil) if req_err != nil { log.Fatal(req_err) return body, req_err } // Headers if headers != nil { for key, value := range *headers { req.Header.Set(key, value) } } resp, resp_err := c.HttpClient.Do(req) if resp_err != nil { log.Fatal(resp_err) return nil, resp_err } defer resp.Body.Close() body, read_err := c.getResponseBody(resp) if read_err != nil { return nil, read_err } return body, nil } func (c *Client) MakePostRequest(url string, params url.Values, headers *map[string]string) ([]byte, error) { req, req_err := http.NewRequest("POST", url, strings.NewReader(params.Encode())) if req_err != nil { log.Fatal(req_err) return nil, req_err } // Adding necessary for POST request header req.Header.Set("Content-Type", "application/x-www-form-urlencoded") // Headers if headers != nil { for key, value := range *headers { req.Header.Set(key, value) } } resp, resp_err := c.HttpClient.Do(req) if resp_err != nil { log.Fatal(resp_err) return nil, resp_err } body, read_err := c.getResponseBody(resp) if read_err != nil { return nil, read_err } return body, nil }