SocialDragon/snapchat/http.go

50 lines
1.2 KiB
Go

package snapchat
import (
"errors"
"log"
"net/http"
"net/url"
"strconv"
"strings"
"git.1750studios.com/AniNite/SocialDragon/config"
)
var sem = make(chan byte, 2)
var client = &http.Client{}
// GetHTTPResource makes HTTP request with snapchat headers
func GetHTTPResource(u string, headers map[string]string, data map[string]string) (*http.Response, error) {
sem <- 1
form := url.Values{}
for key, value := range data {
form.Set(key, value)
}
req, err := http.NewRequest("POST", config.C.Snapchat.APIBase+u, strings.NewReader(form.Encode()))
if err != nil {
log.Fatalf("FAT HTTP - Failed to create new Request: %+v", err)
<-sem
return nil, err
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Accept-Locale", "de-DE")
req.Header.Set("User-Agent", config.C.Snapchat.UserAgent)
req.Header.Set("Accept-Language", "de;q=1, en;q=0.9, fr;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5")
for key, value := range headers {
req.Header.Set(key, value)
}
res, err := client.Do(req)
if err != nil {
<-sem
return nil, err
}
if res.StatusCode != 200 {
res.Body.Close()
<-sem
return nil, errors.New(strconv.Itoa(res.StatusCode))
}
<-sem
return res, nil
}