--[[ Interaction with Scoreoid. ]] local DefaultResultProcessor = Core.class() function DefaultResultProcessor:init(callback, object) self.Callback = callback self.Object = object end function DefaultResultProcessor:OnUrlLoaderError() local dlg = AlertDialog.new("Error", "Failed to execute request. Please check your network settings.", "Ok") dlg:show() end function DefaultResultProcessor:OnRequestCompleted(event) local result = Json.Decode(event.data) if (self.Object ~= nil) then self.Callback(self.Object, result) else self.Callback(result) end event:stopPropagation() end ---------------------------------------------------------------------- ScoreOid = Core.class() function ScoreOid:init(api, gameId) self.Headers = { ["Authorization"] = "Basic", ["Content-Type"] = "application/x-www-form-urlencoded", } self.BaseRequest = "api_key=" .. api .. "&game_id=" .. gameId .. "&response=json" end function ScoreOid:FormatRequest(command) return "https://www.scoreoid.com/api/" .. command end function ScoreOid:ExecuteRequest(command, params, callback, object) local request = self:FormatRequest(command) print(request .. "?" .. params) local loader = UrlLoader.new(request, UrlLoader.POST, self.Headers, params) local requestProcessor = DefaultResultProcessor.new(callback, object) loader:addEventListener(Event.COMPLETE, requestProcessor.OnRequestCompleted, requestProcessor) loader:addEventListener(Event.ERROR, requestProcessor.OnUrlLoaderError, requestProcessor) end function ScoreOid:CreatePlayer(userName, firstName, callback, object) local params = self.BaseRequest .. "&username=" .. userName .. "&first_name=" .. firstName .. "&platform=" .. application:getDeviceInfo() self:ExecuteRequest("createPlayer", params, callback, object) end function ScoreOid:EditPlayer(userName, firstName, callback, object) local params = self.BaseRequest .. "&username=" .. userName .. "&first_name=" .. firstName self:ExecuteRequest("editPlayer", params, callback, object) end function ScoreOid:GetPlayersCount(callback, object) self:ExecuteRequest("countPlayers", self.BaseRequest, callback, object) end function ScoreOid:GetPlayer(userName, callback, object) local params = self.BaseRequest .. "&username=" .. userName self:ExecuteRequest("getPlayer", params, callback, object) end function ScoreOid:DeployScore(userName, score, callback, object) local params = self.BaseRequest .. "&username=" .. userName .. "&score=" .. score self:ExecuteRequest("createScore", params, callback, object) end function ScoreOid:GetBestScores(orderBy, order, limit, callback, object) local params = self.BaseRequest .. "&order_by=" .. orderBy .. "&order=" .. order .. "&limit=" .. limit self:ExecuteRequest("getBestScores", params, callback, object) end