package main import ( "battlecamp-go-server/board" "log" "net/http" "runtime" "github.com/julienschmidt/httprouter" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) router := httprouter.New() router.GET("/", indexHandler) router.GET("/games", gameListHandler) router.PUT("/games", createGameHandler) router.PUT("/games/:rows/:cols", createGameHandler) router.GET("/games/:id", gameHandler) router.GET("/games/board/:id", boardHandler) router.GET("/games/:id/players", playerListHandler) // TODO: /games/{id}/players/{playerId} router.POST("/games/:id/move/:playerId/:direction", moveHandler) log.Fatal(http.ListenAndServe(":8080", router)) } func indexHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { w.Write([]byte("Go battlecamp!")) } func gameListHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { http.Error(w, "Not implemented", http.StatusNotImplemented) } func createGameHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { http.Error(w, "Not implemented", http.StatusNotImplemented) } func gameHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { http.Error(w, "Not implemented", http.StatusNotImplemented) } func playerListHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { http.Error(w, "Not implemented", http.StatusNotImplemented) } func moveHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { http.Error(w, "Not implemented", http.StatusNotImplemented) } // Request params: x={x}&y={y}&rows={rows}&cols={cols} func boardHandler(w http.ResponseWriter, req *http.Request) { x, _ := atoi(req.FormValue("x")) y, _ := atoi(req.FormValue("y")) rows, _ := atoi(req.FormValue("rows")) cols, _ := atoi(req.FormValue("cols")) b := board.New(56, 35) w.Header().Set("Content-Type", "text/plain;charset=utf-8") b.WriteJSON(w) }