You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.6 KiB
81 lines
1.6 KiB
package client
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"mime/multipart"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
Post = "POST"
|
|
Get = "GET"
|
|
)
|
|
|
|
var client = &http.Client{}
|
|
|
|
func Request(method, url, data string, headers ...map[string]string) ([]byte, error) {
|
|
reqest, err := http.NewRequest(method, url, strings.NewReader(data))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if len(headers) > 0 {
|
|
for key, value := range headers[0] {
|
|
reqest.Header.Add(key, value)
|
|
}
|
|
}
|
|
response, err := client.Do(reqest)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer response.Body.Close()
|
|
result, err := ioutil.ReadAll(response.Body)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
|
|
}
|
|
|
|
func RequestFormData(url string, data url.Values, headers ...map[string]string) ([]byte, error) {
|
|
read := &bytes.Buffer{}
|
|
write := multipart.NewWriter(read)
|
|
|
|
for key, value := range data {
|
|
for _, val := range value {
|
|
write.WriteField(key, val)
|
|
}
|
|
}
|
|
write.Close()
|
|
reqest, err := http.NewRequest("POST", url, read)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if len(headers) > 0 {
|
|
if _, ok := headers[0]["Content-Type"]; ok {
|
|
headers[0]["Content-Type"] = write.FormDataContentType()
|
|
} else {
|
|
reqest.Header.Add("Content-Type", write.FormDataContentType())
|
|
}
|
|
for key, value := range headers[0] {
|
|
reqest.Header.Add(key, value)
|
|
}
|
|
} else {
|
|
reqest.Header.Add("Content-Type", write.FormDataContentType())
|
|
}
|
|
reqest.Header.Add("X-Recook-System", "recookapi")
|
|
response, err := client.Do(reqest)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer response.Body.Close()
|
|
result, err := ioutil.ReadAll(response.Body)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
|
|
}
|