main.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. "battlecamp-go-server/board"
  4. "log"
  5. "net/http"
  6. "runtime"
  7. "github.com/julienschmidt/httprouter"
  8. )
  9. func main() {
  10. runtime.GOMAXPROCS(runtime.NumCPU())
  11. router := httprouter.New()
  12. router.GET("/", indexHandler)
  13. router.GET("/games", gameListHandler)
  14. router.PUT("/games", createGameHandler)
  15. router.PUT("/games/:rows/:cols", createGameHandler)
  16. router.GET("/games/:id", gameHandler)
  17. router.GET("/games/board/:id", boardHandler)
  18. router.GET("/games/:id/players", playerListHandler)
  19. // TODO: /games/{id}/players/{playerId}
  20. router.POST("/games/:id/move/:playerId/:direction", moveHandler)
  21. log.Fatal(http.ListenAndServe(":8080", router))
  22. }
  23. func indexHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
  24. w.Write([]byte("Go battlecamp!"))
  25. }
  26. func gameListHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
  27. http.Error(w, "Not implemented", http.StatusNotImplemented)
  28. }
  29. func createGameHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
  30. http.Error(w, "Not implemented", http.StatusNotImplemented)
  31. }
  32. func gameHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
  33. http.Error(w, "Not implemented", http.StatusNotImplemented)
  34. }
  35. func playerListHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
  36. http.Error(w, "Not implemented", http.StatusNotImplemented)
  37. }
  38. func moveHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
  39. http.Error(w, "Not implemented", http.StatusNotImplemented)
  40. }
  41. // Request params: x={x}&y={y}&rows={rows}&cols={cols}
  42. func boardHandler(w http.ResponseWriter, req *http.Request) {
  43. x, _ := atoi(req.FormValue("x"))
  44. y, _ := atoi(req.FormValue("y"))
  45. rows, _ := atoi(req.FormValue("rows"))
  46. cols, _ := atoi(req.FormValue("cols"))
  47. b := board.New(56, 35)
  48. w.Header().Set("Content-Type", "text/plain;charset=utf-8")
  49. b.WriteJSON(w)
  50. }