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(®isterMsg)
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}