arnaucube
arnaucube/gogame-oldPublic Self-hosted repository
gogame-old/endpoint/handlers.go
endpoint/handlers.goRaw
  1package endpoint
  2
  3import (
  4	"fmt"
  5
  6	"github.com/fatih/color"
  7	"github.com/gin-gonic/gin"
  8	"gopkg.in/mgo.v2/bson"
  9)
 10
 11func fail(c *gin.Context, err error, msg string) {
 12	color.Red(msg + ": " + err.Error())
 13	c.JSON(400, gin.H{
 14		"error": msg,
 15	})
 16}
 17func handleMain(c *gin.Context) {
 18	c.JSON(200, gin.H{
 19		"status": "wellcome to gogame",
 20	})
 21}
 22
 23func handleInfo(c *gin.Context) {
 24	c.JSON(200, gin.H{
 25		"info": "info",
 26	})
 27}
 28
 29type RegisterMsg struct {
 30	Name     string `binding:"required"`
 31	Password string `binding:"required"`
 32	Email    string `binding:"required"`
 33}
 34
 35func handleRegister(c *gin.Context) {
 36	var registerMsg RegisterMsg
 37	c.BindJSON(&registerMsg)
 38	user, err := userservice.Register(registerMsg.Name, registerMsg.Password, registerMsg.Email)
 39	if err != nil {
 40		fail(c, err, "error on register")
 41		return
 42	}
 43	c.JSON(200, gin.H{
 44		"user": user,
 45	})
 46}
 47
 48type LoginMsg struct {
 49	Email    string `binding:"required"`
 50	Password string `binding:"required"`
 51}
 52
 53func handleLogin(c *gin.Context) {
 54	var loginMsg LoginMsg
 55	c.BindJSON(&loginMsg)
 56	token, user, err := userservice.Login(loginMsg.Email, loginMsg.Password)
 57	if err != nil {
 58		fail(c, err, "error on login")
 59		return
 60	}
 61	c.JSON(200, gin.H{
 62		"token": token,
 63		"user":  user,
 64	})
 65}
 66
 67func handleGetResources(c *gin.Context) {
 68	userid := c.Param("userid")
 69
 70	user, err := userservice.GetUserById(bson.ObjectIdHex(userid))
 71	if err != nil {
 72		fail(c, err, "error on getting user")
 73		return
 74	}
 75	resources, err := user.GetResources()
 76	if err != nil {
 77		fail(c, err, "error on getting user resources")
 78		return
 79	}
 80
 81	c.JSON(200, gin.H{
 82		"user":      user,
 83		"resources": resources,
 84	})
 85}
 86
 87func handleGetUserPlanets(c *gin.Context) {
 88	userid := c.Param("userid")
 89
 90	planets, err := userservice.GetUserPlanetsById(bson.ObjectIdHex(userid))
 91	if err != nil {
 92		fail(c, err, "error on getting user planets")
 93		return
 94	}
 95
 96	c.JSON(200, gin.H{
 97		"planets": planets,
 98	})
 99}
100
101type BuildMsg struct {
102	PlanetId string
103	Building string
104}
105
106func handlePostUpgradeBuilding(c *gin.Context) {
107	userid := c.Param("userid")
108	var buildMsg BuildMsg
109	err := c.BindJSON(&buildMsg)
110	if err != nil {
111		fail(c, err, "error parsing json")
112		return
113	}
114	fmt.Println(buildMsg)
115
116	user, err := userservice.GetUserById(bson.ObjectIdHex(userid))
117	if err != nil {
118		fail(c, err, "error on getting user")
119		return
120	}
121
122	planet, err := gameservice.UpgradeBuilding(user, bson.ObjectIdHex(buildMsg.PlanetId), buildMsg.Building)
123	if err != nil {
124		fail(c, err, "error upgrading building")
125		return
126	}
127
128	c.JSON(200, gin.H{
129		"planet": planet,
130	})
131}