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

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
}