func (this *GameController) Put() { object, err := Game(this) if err == nil { conn := redisPool.Get() defer conn.Close() option := this.GetString("option") correct := &variant.DumpObject{} if object.Current != "" { correct = variant.ConvertToDumpObject(variant.Objects[object.Current]) if object.Current == option { correct = nil } } else { correct = nil } game.SetVariant(object, option) highest, _ := redis.Int(conn.Do("GET", "highest")) if object.Score > highest { if _, err := conn.Do("SET", "highest", object.Score); err != nil { beego.Critical(err) } } if object.Lives <= 0 { this.Data["json"] = &GameResponse{object, nil, correct, "died"} if _, err := conn.Do("INCR", "died"); err != nil { beego.Critical(err) } } else { variant := game.GetVariant(object) if variant != nil { this.Data["json"] = &GameResponse{object, game.GetVariant(object), correct, "ready"} } else { this.Data["json"] = &GameResponse{object, nil, correct, "survived"} if _, err := conn.Do("INCR", "survived"); err != nil { beego.Critical(err) } } } } else { this.Data["json"] = map[string]string{"error": fmt.Sprint(err)} } this.ServeJson() }
func (this *GameController) Get() { object, err := Game(this) if err == nil { status := "ready" if object.Lives <= 0 { status = "died" } else if len(object.Completed) == len(variant.Objects) { status = "survived" } this.Data["json"] = &GameResponse{object, game.GetVariant(object), nil, status} } else { this.Data["json"] = map[string]string{"error": fmt.Sprint(err)} } this.ServeJson() }
func (this *GameController) Post() { object, err := game.Add() if err == nil { cookie := http.Cookie{Name: "GameObjectId", Value: url.QueryEscape(object.ObjectId), Path: "/", HttpOnly: true, Secure: false, Expires: time.Now().Add(time.Duration(31*24*3600) * time.Second)} http.SetCookie(this.Ctx.ResponseWriter, &cookie) this.Data["json"] = &GameResponse{object, game.GetVariant(object), nil, "ready"} } else { this.Data["json"] = map[string]string{"error": fmt.Sprint(err)} } this.ServeJson() }