Files
cloud-services/pkg/httpclient/client.go

66 lines
1.4 KiB
Go

package httpclient
import (
"bytes"
"encoding/json"
"net/http"
"time"
)
// HTTPClient interface
type HTTPClient interface {
Do(req *http.Request) (*http.Response, error)
}
// Global
var (
Client HTTPClient
)
func init() {
Client = &http.Client{Timeout: 10 * time.Second}
}
// Get sends a get request to the URL
func Get(url string, headers http.Header) (*http.Response, error) {
request, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return nil, err
}
request.Header = headers
return Client.Do(request)
}
// Post sends a post request to the URL with the body
func Post(url string, body interface{}, headers http.Header) (*http.Response, error) {
jsonBytes, err := json.Marshal(body)
if err != nil {
return nil, err
}
request, err := http.NewRequest(http.MethodPost, url, bytes.NewReader(jsonBytes))
if err != nil {
return nil, err
}
request.Header = headers
return Client.Do(request)
}
// Delete sends a delete request to the URL with the body
func Delete(url string, body interface{}, headers http.Header) (*http.Response, error) {
jsonBytes, err := json.Marshal(body)
if err != nil {
return nil, err
}
request, err := http.NewRequest(http.MethodDelete, url, bytes.NewReader(jsonBytes))
if err != nil {
return nil, err
}
request.Header = headers
return Client.Do(request)
}
// Do sends the request
func Do(request *http.Request) (*http.Response, error) {
return Client.Do(request)
}