goRecommender/serverRoutes.go
serverRoutes.goRaw
1package main
2
3import (
4 "encoding/json"
5 "fmt"
6 "net/http"
7 "strconv"
8
9 "github.com/gorilla/mux"
10)
11
12type Routes []Route
13
14var routes = Routes{
15 Route{
16 "Index",
17 "GET",
18 "/",
19 Index,
20 },
21 Route{
22 "Recommendations",
23 "GET",
24 "/r/{userid}/{nrec}",
25 Recommendations,
26 },
27 Route{
28 "NewUser",
29 "POST",
30 "/user",
31 NewUser,
32 },
33}
34
35//ROUTES
36
37func Index(w http.ResponseWriter, r *http.Request) {
38 fmt.Fprintln(w, "ask for recommendations in /r")
39}
40
41func NewUser(w http.ResponseWriter, r *http.Request) {
42 decoder := json.NewDecoder(r.Body)
43 var newUser UserModel
44 err := decoder.Decode(&newUser)
45 check(err)
46 defer r.Body.Close()
47
48 saveUser(userCollection, newUser)
49
50 fmt.Println(newUser)
51 fmt.Fprintln(w, "new user added: ", newUser.ID)
52}
53func Recommendations(w http.ResponseWriter, r *http.Request) {
54 vars := mux.Vars(r)
55 userid := vars["userid"]
56 nrec, err := strconv.Atoi(vars["nrec"])
57 check(err)
58
59 //now, get recommendations
60 getRecommendations(userid, nrec)
61
62 fmt.Fprintln(w, "recommendations")
63}