a0763477c5
* will not re-prompt if the email permission is denied, or if you previously authorized the same FB app without the email scope.
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package api
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/bitly/go-simplejson"
|
|
)
|
|
|
|
func Request(req *http.Request) (*simplejson.Json, error) {
|
|
resp, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
log.Printf("%s %s %s", req.Method, req.URL, err)
|
|
return nil, err
|
|
}
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
resp.Body.Close()
|
|
log.Printf("%d %s %s %s", resp.StatusCode, req.Method, req.URL, body)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if resp.StatusCode != 200 {
|
|
return nil, fmt.Errorf("got %d %s", resp.StatusCode, body)
|
|
}
|
|
data, err := simplejson.NewJson(body)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
func RequestJson(req *http.Request, v interface{}) error {
|
|
resp, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
log.Printf("%s %s %s", req.Method, req.URL, err)
|
|
return err
|
|
}
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
resp.Body.Close()
|
|
log.Printf("%d %s %s %s", resp.StatusCode, req.Method, req.URL, body)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if resp.StatusCode != 200 {
|
|
return fmt.Errorf("got %d %s", resp.StatusCode, body)
|
|
}
|
|
return json.Unmarshal(body, v)
|
|
}
|
|
|
|
func RequestUnparsedResponse(url string, header http.Header) (resp *http.Response, err error) {
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
req.Header = header
|
|
|
|
return http.DefaultClient.Do(req)
|
|
}
|