func validateRegisterRequest(req *jsondata.JSONMap) Request { name, r1 := req.GetString("name") password, r2 := req.GetString("password") device, r3 := req.GetString("deviceId") profile, r4 := req.GetString("profile") s := "{\"result\": false, \"answer\": \"missing or invalid arguments in the request\"}" if !(r1 && r2 && r3 && r4) { return &BadRequest{s} } if len(name) < 6 /*|| len(password) < 2*/ || len(device) < 6 { return &BadRequest{s} } displayName, _ := req.GetString("displayName") os, _ := req.GetString("os") osVer, _ := req.GetString("osVersion") density, _ := req.GetString("density") portraitX, _ := req.GetUInt("portraitX") portraitY, _ := req.GetUInt("portraitY") screen, _ := req.GetString("screenSize") // TODO: for the moment we have disabled hash generation to avoid JSON issues /*hasher := sha1.New() hasher.Write([]byte(name + password + device)) hash := hasher.Sum()*/ hash := name + "**" + device return datastore.NewUserDevice(name, displayName, password, device, hash, profile, os, osVer, portraitX, portraitY, density, screen) }
func parseUpdateParams(req *jsondata.JSONMap) *CheckUpdateRequestParams { uid := getUID(req) verApp, r1 := req.GetString("verApp") verRes, r2 := req.GetString("verRes") if !r1 || !r2 { return nil } portraitX := 0 portraitY := 0 density := 0 size := InvalidScreen portraitX, _ = req.GetUInt("portraitX") portraitY, _ = req.GetUInt("portraitY") if portraitX == 0 || portraitY == 0 { return nil } d, _ := req.GetString("density") density = screenDensity(d) d, _ = req.GetString("screenSize") size = screenSize(d) p := CheckUpdateRequestParams{uid, verApp, verRes, portraitX, portraitY, density, size} return &p }
// // {"verb": "syncCoinCounts", "hash": <user_hash>, "count": <count>} // func validateSyncCoinCounts(req *jsondata.JSONMap) Request { hash, r1 := req.GetString("hash") count, r2 := req.GetUInt("count") json := "{\"result\": false, \"answer\": \"missing or invalid arguments in syncCoinCount request\"}" if !r1 || !r2 || count <= 0 || len(hash) < 6 { return &BadRequest{json} } return datastore.NewSyncCoinCounts(hash, count) }
// // { "verb": "getPendingCoinRequests", "hash": <user-id>, "limit": <unsigned integer> } // { "result": true, "answer" : [zero-or-more{"name": <name>, "count": <unsigned int>}] } // func validateGetPendingCoinRequests(req *jsondata.JSONMap) Request { hash, r1 := req.GetString("hash") limit, r2 := req.GetUInt("limit") json := "{\"result\": false, \"answer\": \"missing or invalid arguments in getPendingCoinRequests request\"}" if !r1 || !r2 || limit <= 0 || len(hash) < 6 { return &BadRequest{json} } return datastore.NewGetPendingCoinRequests(hash, limit) }
func validateSetAchievement(req *jsondata.JSONMap) Request { hash, r1 := req.GetString("hash") achievement, r2 := req.GetUInt("achievement") json := "{\"result\": false, \"answer\": \"missing or invalid arguments in setAchievement request\"}" if !r1 || !r2 || len(hash) < 6 { return &BadRequest{json} } return datastore.NewSetAchievementRequest(hash, achievement) }
// // { "verb": "setScore", "hash": <user-id>, "game": <game name>, "score": <unsigned integer> } // { "result": true, "answer" : "" } // func validateSetScore(req *jsondata.JSONMap) Request { hash, r1 := req.GetString("hash") score, r2 := req.GetUInt("score") game, r3 := req.GetString("game") json := "{\"result\": false, \"answer\": \"missing or invalid arguments in setScore request\"}" if !r1 || !r2 || !r3 || score < 0 || len(hash) < 6 || len(game) < 6 { return &BadRequest{json} } return datastore.NewSetScoreRequest(hash, game, score) }
func validateReceiveMessage(req *jsondata.JSONMap) Request { to, r1 := req.GetString("receiver") // hash of the receiver limit, _ := req.GetUInt("limit") // ignored, at the moment // additionally, we need to record the date and time of this response if !r1 || len(to) < 6 { jsonRes := "{\"result\": false, \"answer\": \"Missing or Invalid data in receiveMessage request\"}" return &BadRequest{jsonRes} } return datastore.NewReceiveMessage(to, limit) }
func validateRequestCoins(req *jsondata.JSONMap) Request { count, r1 := req.GetUInt("count") requester, r2 := req.GetString("requester") // hash donor, r3 := req.GetString("donor") // fb id // additionally, we need to record the date and time of this request if !r1 || !r2 || !r3 || len(requester) < 6 || len(donor) < 6 || count <= 0 { jsonRes := "{\"result\": false, \"answer\": \"Missing or Invalid data in requestCoins request\"}" return &BadRequest{jsonRes} } return datastore.NewCoinsRequest(requester, donor, count) }
func validateOfferCoins(req *jsondata.JSONMap) Request { offer, r1 := req.GetUInt("offer") countOnDevice, r2 := req.GetUInt("countOnDevice") requester, r3 := req.GetString("requester") // fb id donor, r4 := req.GetString("donor") // hash // additionally, we need to record the date and time of this response if !r1 || !r2 || !r3 || !r4 || len(donor) < 6 || len(requester) < 6 || offer <= 0 || countOnDevice <= 0 { jsonRes := "{\"result\": false, \"answer\": \"Missing or Invalid data in offerCoins request\"}" return &BadRequest{jsonRes} } return datastore.NewCoinsOffer(requester, donor, offer, countOnDevice) }