-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.go
96 lines (85 loc) · 2.47 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
var db Database
var debug bool
func GetUser(access_token, user_id string) (User, error) {
google_user := new(googlePlusUser)
if !debug {
resp, err := http.Get(
"https://www.googleapis.com/plus/v1/people/me?access_token=" +
access_token)
if err != nil {
log.Print("Error getting google user")
return User{}, nil// TODO: error.New("Error getting google user")
}
decoder := json.NewDecoder(resp.Body)
decoder.Decode(&google_user)
resp.Body.Close()
} else {
google_user.Id = access_token;
google_user.Name = "Name" + access_token;
google_user.Image.Avatar = "http://avatar.com/" + access_token;
}
user := db.GetUser(google_user, user_id)
log.Print(user)
return user, nil
}
func me(w http.ResponseWriter, r *http.Request) {
log.Print("*************************************")
log.Print("* /me *")
log.Print("*************************************")
access_token := r.FormValue("access_token")
user_id := r.FormValue("user_id")
log.Print("access token: " + access_token)
user, err := GetUser(access_token, user_id)
if err != nil {
log.Print("Error getting google user")
return
}
serialized_user, err := json.Marshal(user)
if err != nil {
log.Print("Error serializing user: ")
log.Print(user)
return
}
fmt.Fprintf(w, "%s", serialized_user)
}
func create_event(w http.ResponseWriter, r *http.Request) {
log.Print("*************************************")
log.Print("* /me/CreateEvent *")
log.Print("*************************************")
access_token := r.FormValue("access_token")
user_id := r.FormValue("user_id")
log.Print("access token: " + access_token)
user, err := GetUser(access_token, user_id)
if err != nil {
log.Print("Error getting google user")
return
}
user.Events = []Event{}
title := r.FormValue("title")
r.ParseForm()
participants := r.Form["participants"]
participants = append(participants, user.Id)
event_id := r.FormValue("id")
event := db.CreateEvent(event_id, title, participants)
log.Print(event)
serialized_event, err := json.Marshal(event)
if err != nil {
log.Print("Error serializing event...")
return
}
fmt.Fprintf(w, "%s", serialized_event)
}
func main() {
debug = false
db.Init()
http.HandleFunc("/me", me)
http.HandleFunc("/me/create_event", create_event)
http.ListenAndServe(":3000", nil)
}