goBlockchainDataAnalysis/serverRoutes.go
serverRoutes.goRaw
1package main
2
3import (
4 "encoding/json"
5 "fmt"
6 "net/http"
7
8 "gopkg.in/mgo.v2/bson"
9
10 "github.com/gorilla/mux"
11)
12
13type Routes []Route
14
15var routes = Routes{
16 Route{
17 "Index",
18 "GET",
19 "/",
20 Index,
21 },
22 Route{
23 "AllAddresses",
24 "Get",
25 "/alladdresses",
26 AllAddresses,
27 },
28 Route{
29 "AddressNetwork",
30 "GET",
31 "/address/network/{address}",
32 AddressNetwork,
33 },
34 Route{
35 "NetworkMap",
36 "Get",
37 "/map",
38 NetworkMap,
39 },
40 /*
41 Route{
42 "SelectItem",
43 "GET",
44 "/selectItem/{userid}/{itemid}",
45 SelectItem,
46 },
47 */
48}
49
50//ROUTES
51
52func Index(w http.ResponseWriter, r *http.Request) {
53 fmt.Fprintln(w, "ask for recommendations in /r")
54 //http.FileServer(http.Dir("./web"))
55}
56
57/*
58func NewUser(w http.ResponseWriter, r *http.Request) {
59 ipFilter(w, r)
60 decoder := json.NewDecoder(r.Body)
61 var newUser UserModel
62 err := decoder.Decode(&newUser)
63 check(err)
64 defer r.Body.Close()
65
66 saveUser(userCollection, newUser)
67
68 fmt.Println(newUser)
69 fmt.Fprintln(w, "new user added: ", newUser.ID)
70}
71*/
72func AllAddresses(w http.ResponseWriter, r *http.Request) {
73 ipFilter(w, r)
74
75 nodes := []NodeModel{}
76 iter := nodeCollection.Find(bson.M{}).Limit(10000).Iter()
77 err := iter.All(&nodes)
78
79 //convert []resp struct to json
80 jsonNodes, err := json.Marshal(nodes)
81 check(err)
82
83 fmt.Fprintln(w, string(jsonNodes))
84}
85func AddressNetwork(w http.ResponseWriter, r *http.Request) {
86 ipFilter(w, r)
87
88 vars := mux.Vars(r)
89 address := vars["address"]
90 if address == "undefined" {
91 fmt.Fprintln(w, "not valid address")
92 } else {
93 network := addressTree(address)
94
95 //convert []resp struct to json
96 jNetwork, err := json.Marshal(network)
97 check(err)
98
99 fmt.Fprintln(w, string(jNetwork))
100 }
101}
102func NetworkMap(w http.ResponseWriter, r *http.Request) {
103 ipFilter(w, r)
104
105 nodes, err := getAllNodes()
106 check(err)
107 edges, err := getAllEdges()
108 check(err)
109
110 var network NetworkModel
111 network.Nodes = nodes
112 network.Edges = edges
113
114 //convert []resp struct to json
115 jNetwork, err := json.Marshal(network)
116 check(err)
117
118 fmt.Fprintln(w, string(jNetwork))
119}
120
121/*
122func SelectItem(w http.ResponseWriter, r *http.Request) {
123 ipFilter(w, r)
124 vars := mux.Vars(r)
125 userid := vars["userid"]
126 itemid := vars["itemid"]
127 //find item
128 item, err := getItemById(itemid)
129 if err != nil {
130 fmt.Fprintln(w, "item "+itemid+" not found")
131 }
132
133 //find user
134 user, err := getUserById(userid)
135 if err != nil {
136 fmt.Fprintln(w, "user "+userid+" not found")
137 }
138
139 //increase TActed in item
140 item.TActed = item.TActed + 1
141
142 //save item
143 item, err = updateItem(item)
144 check(err)
145 fmt.Println(item)
146
147 //add item to []Actions of user
148 user.Actions = append(user.Actions, itemid)
149
150 //save user
151 user, err = updateUser(user)
152 check(err)
153 fmt.Println(user)
154
155 fmt.Fprintln(w, "user: "+userid+", selects item: "+itemid)
156}
157*/