| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // API doc: https://wiki.summercamp.local/display/PIN/Pinguin+server+API
- package main
- import (
- "battlecamp-go-server/board"
- "battlecamp-go-server/games"
- "log"
- "net/http"
- "runtime"
- "strconv"
- "github.com/julienschmidt/httprouter"
- )
- var currentGames games.Games = games.New()
- func main() {
- runtime.GOMAXPROCS(runtime.NumCPU())
- router := httprouter.New()
- router.GET("/", showIndex)
- router.GET("/games", listGames)
- router.PUT("/games", createGame)
- router.PUT("/games/:rows/:cols", createGame)
- router.GET("/games/:gameid", showGame)
- router.GET("/games/:gameid/:boardid", proxyHandler)
- //router.GET("/games/:gameid/players", playerListHandler)
- // TODO: /games/{id}/players/{playerId}
- router.POST("/games/:gameid/move/:playerId/:direction", movePlayer)
- log.Fatal(http.ListenAndServe(":8080", router))
- }
- func showIndex(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
- w.Write([]byte("Go battlecamp!"))
- }
- func proxyHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- if ps.ByName("gameid") == "board" {
- showBoard(w, r, ps)
- } else if ps.ByName("boardid") == "join" {
- joinGame(w, r, ps)
- } else {
- listPlayers(w, r, ps)
- }
- }
- func listGames(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
- http.Error(w, "listGames not implemented", http.StatusNotImplemented)
- }
- func createGame(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- xString := ps.ByName("x")
- yString := ps.ByName("y")
- var game *games.Game
- if xString != "" && yString != "" {
- x, _ := strconv.Atoi(xString)
- y, _ := strconv.Atoi(yString)
- game = games.NewGame(x, y)
- } else {
- game = games.NewGame(56, 35)
- }
- currentGames.AddGame(game)
- }
- func joinGame(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- http.Error(w, "joinGame not implemented", http.StatusNotImplemented)
- }
- func showGame(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- http.Error(w, "showGame not implemented", http.StatusNotImplemented)
- }
- func listPlayers(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- http.Error(w, "listPlayers not implemented", http.StatusNotImplemented)
- }
- func movePlayer(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- http.Error(w, "movePlayer not implemented", http.StatusNotImplemented)
- }
- // Request params: x={x}&y={y}&rows={rows}&cols={cols}
- func showBoard(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
- //x, _ := strconv.Atoi(req.FormValue("x"))
- //y, _ := strconv.Atoi(req.FormValue("y"))
- //rows, _ := strconv.Atoi(req.FormValue("rows"))
- //cols, _ := strconv.Atoi(req.FormValue("cols"))
- b := board.New(56, 35)
- w.Header().Set("Content-Type", "text/plain;charset=utf-8")
- b.WriteJSON(w)
- }
|