arnaucube
arnaucube/goRecommenderPublic Self-hosted repository
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}