arnaucube
arnaucube/goBlockchainDataAnalysisPublic Self-hosted repository
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*/