Ejemplo n.º 1
0
//
// { "verb": "getCoincount", "name": fb-name }
// { "result": true, "answer" : 6357] }
// { "result": false, "answer" : "not a registered user"] }
//
func validateGetCoinCountRequest(req *jsondata.JSONMap) Request {
	name, r1 := req.GetString("name")

	json := "{\"result\": false, \"answer\": \"missing or invalid arguments in getPendingCoinRequests request\"}"
	if !r1 || len(name) < 6 {
		return &BadRequest{json}
	}
	return datastore.NewGetCoinCount(name)
}
Ejemplo n.º 2
0
func validateGetAchievements(req *jsondata.JSONMap) Request {
	hash, r1 := req.GetString("hash")

	json := "{\"result\": false, \"answer\": \"missing or invalid arguments in getAchievements request\"}"
	if !r1 || len(hash) < 6 {
		return &BadRequest{json}
	}
	return datastore.NewGetAchievementRequest(hash)
}
Ejemplo n.º 3
0
func validateGetLeaderBoard(req *jsondata.JSONMap) Request {
	hash, r1 := req.GetString("hash")

	if !r1 || len(hash) < 6 {
		jsonRes := "{\"result\": false, \"answer\": \"Missing or Invalid data in getLeaderBoard request\"}"
		return &BadRequest{jsonRes}
	}

	return datastore.NewLeaderBoardRequest(hash)
}
Ejemplo n.º 4
0
// unregister: (in) json
//    { "name": "*****@*****.**", "hash":"123456..." }
func validateUnregisterRequest(req *jsondata.JSONMap) Request {
	name, r1 := req.GetString("name")
	hash, r2 := req.GetString("hash")

	s := "{\"result\": false, \"answer\": \"missing or invalid arguments in the request\"}"
	if !r1 || !r2 || len(name) < 6 || len(hash) < 6 {
		return &BadRequest{s}
	}
	return datastore.NewUnregisterRequest(name, hash)
}
Ejemplo n.º 5
0
//
// {"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)
}
Ejemplo n.º 6
0
//
// { "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)
}
Ejemplo n.º 7
0
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)
}
Ejemplo n.º 8
0
func ValidateRequest(req *jsondata.JSONMap) *Response {
	err := MissingVerb

	if cmd, res := req.GetString("verb"); res {
		err = InvalidVerb
		if handler := reqHandlers[cmd]; handler != nil {
			return handler(req)
		}
	}
	panic(err)
}
Ejemplo n.º 9
0
//
// { "verb": "getScore", "hash": <user-id> , "game": <game-name>}
// { "result": true, "answer" : <score-unsigned-int> }
// { "result": false, "answer" : "invalid user" }
//
func validateGetScore(req *jsondata.JSONMap) Request {
	hash, r1 := req.GetString("hash")
	game, r2 := req.GetString("game")

	json := "{\"result\": false, \"answer\": \"missing or invalid arguments in getScore request\"}"
	if !r1 || !r2 || len(hash) < 6 || len(game) < 6 {
		return &BadRequest{json}
	}

	return datastore.NewGetScoreRequest(hash, game)
}
Ejemplo n.º 10
0
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)
}
Ejemplo n.º 11
0
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

}
Ejemplo n.º 12
0
func validateRequest(httpReq *http.Request, jsonMap *jsondata.JSONMap) Request {
	var reason string = "missing verb in the request"

	if cmd, res := jsonMap.GetString("verb"); res {
		reason = "Invalid or unknown REST-resource and verb combined in the request (" + httpReq.RawURL + " : " + cmd + ")"
		if handler := reqHandlers[cmd]; handler != nil {
			if isVerbValidForResource(httpReq.URL.Path, cmd) {
				return handler(jsonMap)
			}
		}
	}

	msg := "{\"result\": false, \"answer\": \"" + reason + "\"}"
	return &BadRequest{msg}
}
Ejemplo n.º 13
0
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)
}
Ejemplo n.º 14
0
func ValidateRegisterRequest(req *jsondata.JSONMap) *Response {
	name, r1 := req.GetString("name")
	password, r2 := req.GetString("password")
	device, r3 := req.GetString("deviceId")

	if r1 && r2 && r3 {
		osVer, _ := req.GetString("osVersion")
		hasher := sha1.New()
		hasher.Write([]byte(name + password + device))
		fmt.Printf("osVer: %v, hash size: %v, hash sum: %v\n",
			osVer, hasher.Size(), hasher.Sum())
		return nil
	}

	panic("Ill-formed JSON for register request")
}
Ejemplo n.º 15
0
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)
}
Ejemplo n.º 16
0
func validateSendMessage(req *jsondata.JSONMap) Request {
	from, r1 := req.GetString("from") // hash value
	to, r2 := req.GetString("to")     // fb id
	msg, r3 := req.GetString("message")

	// additionally, we need to record the date and time of this response

	if !r1 || !r2 || !r3 || to == from || len(from) < 6 || len(to) < 6 || len(msg) == 0 {
		jsonRes := "{\"result\": false, \"answer\": \"Missing or Invalid data in sendMessage request\"}"
		return &BadRequest{jsonRes}
	}

	return datastore.NewSendMessage(from, to, msg)
}
Ejemplo n.º 17
0
func getUID(req *jsondata.JSONMap) string {
	if uid, r := req.GetString("uid"); r {
		return uid
	}
	panic("Fatal Error: missing UID in the request")
}
Ejemplo n.º 18
0
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)
}