-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.go
60 lines (52 loc) · 1.67 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package fifthsquare
import (
"fmt"
"github.com/aykutaras/gosquare"
"log"
"net/http"
"os"
)
const (
uri = "http://localhost:4001"
clientIdEnvKey = "FOURSQUARE_CLIENTID"
clientSecretEnvKey = "FOURSQUARE_CLIENTSECRET"
)
var api *gosquare.Api = &gosquare.Api{
Auth: &gosquare.Auth{ClientId: os.Getenv(clientIdEnvKey), ClientSecret: os.Getenv(clientSecretEnvKey)},
Users: new(gosquare.Users),
}
func ConnectToFoursquare(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query()
if code := query.Get("code"); code != "" || api.Auth.AccessToken != "" {
code := query.Get("code")
api.Auth.GetAccessToken(uri, code)
fmt.Fprint(w, "<a href='profile'>Profile</a><br />")
fmt.Fprint(w, "<a href='checkins'>CheckIns</a><br />")
fmt.Fprint(w, "<a href='friends'>Friends</a><br />")
} else {
authUri := api.Auth.Authenticate(uri)
fmt.Fprintf(w, "<a href='%s'>Connect to Foursquare</a>", authUri)
}
}
func GetUserProfile(w http.ResponseWriter, r *http.Request) {
api.Users.Profile.Get(api.Auth.AccessToken)
fmt.Fprintf(w, "%s", api.Users.CheckIns)
}
func GetUserCheckIns(w http.ResponseWriter, r *http.Request) {
api.Users.CheckIns.Get(api.Auth.AccessToken)
fmt.Fprintf(w, "%s", api.Users.CheckIns)
}
func GetUserFriends(w http.ResponseWriter, r *http.Request) {
api.Users.Friends.Get(api.Auth.AccessToken)
fmt.Fprintf(w, "%s", api.Users.Friends)
}
func InitHttpService(serverUrl string) {
http.HandleFunc("/", ConnectToFoursquare)
http.HandleFunc("/checkins", GetUserCheckIns)
http.HandleFunc("/friends", GetUserFriends)
http.HandleFunc("/profile", GetUserProfile)
err := http.ListenAndServe(serverUrl, nil)
if err != nil {
log.Fatal(err)
}
}