|
|
package main
import ( "encoding/json" "fmt" "net/http" "strconv"
"github.com/gorilla/mux"
"gopkg.in/mgo.v2/bson" )
type Routes []Route
var routes = Routes{ Route{ "Index", "GET", "/", Index, }, Route{ "GetAllCells", "Get", "/allcells", GetAllCells, }, Route{ "GetCellsInQuad", "Get", "/cells/{lat1}/{lon1}/{lat2}/{lon2}", GetCellsInQuad, }, }
//ROUTES
func Index(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "ask for cells in /r") //http.FileServer(http.Dir("./web"))
} func GetAllCells(w http.ResponseWriter, r *http.Request) { ipFilter(w, r)
cells := []CellModel{} iter := cellCollection.Find(bson.M{}).Limit(10000).Iter() err := iter.All(&cells)
//convert []cells struct to json
jsonCells, err := json.Marshal(cells) check(err)
fmt.Fprintln(w, string(jsonCells)) } func GetCellsInQuad(w http.ResponseWriter, r *http.Request) { ipFilter(w, r)
vars := mux.Vars(r) lat1, err := strconv.ParseFloat(vars["lat1"], 64) check(err) lon1, err := strconv.ParseFloat(vars["lon1"], 64) check(err) lat2, err := strconv.ParseFloat(vars["lat2"], 64) check(err) lon2, err := strconv.ParseFloat(vars["lon2"], 64) check(err) fmt.Println(vars)
cells := []CellModel{} iter := cellCollection.Find(bson.M{"lat": bson.M{"$gte": lat2, "$lt": lat1}, "lon": bson.M{"$gte": lon1, "$lt": lon2}}).Limit(100).Iter() err = iter.All(&cells)
//convert []cells struct to json
jsonCells, err := json.Marshal(cells) check(err)
fmt.Fprintln(w, string(jsonCells)) }
|