class App42::Game::RewardService

Define a Reward e.g. Sword, Energy etc. Is needed for Reward Points The Game service allows Game, User, Score and ScoreBoard Management on the Cloud. The service allows Game Developer to create a Game and then do in Game Scoring using the Score service. It also allows to maintain a Scoreboard across game sessions using the ScoreBoard service. One can query for average or highest score for user for a Game and highest and average score across users for a Game. It also gives ranking of the user against other users for a particular game. The Reward and RewardPoints allows the Game Developer to assign rewards to a user and redeem the rewards.

E.g. One can give Swords or Energy etc. The services Game, Score, ScoreBoard, Reward, RewardPoints can be used in Conjunction for complete Game Scoring and Reward Management.

@see Game, RewardPoint, Score, ScoreBoard

Public Class Methods

new(api_key, secret_key, base_url) click to toggle source

this is a constructor that takes

@param apiKey @param secretKey @param baseURL

# File lib/game/RewardService.rb, line 38
def initialize(api_key, secret_key, base_url)
  puts "Reward->initialize"
  @api_key = api_key
  @secret_key = secret_key
  @base_url = base_url
  @resource = "game/reward"
  @version = "1.0"
end

Public Instance Methods

create_reward(rewardName, rewardDescription) click to toggle source

Creates Reward. Reward can be Sword, Energy etc. When Reward Points have to be added the Reward name created using this method has to be specified.

@param rewardName

- The reward that has to be created

@param rewardDescription

- The description of the reward to be created

@return Reward object containing the reward that has been created

@raise App42Exception

# File lib/game/RewardService.rb, line 61
def create_reward(rewardName, rewardDescription)
  puts "Create Reward Called "
  puts "Base url #{@base_url}"
  response = nil;
  rewardObj = nil;
  rewardObj = Reward.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");
  util.throwExceptionIfNullOrBlank(rewardDescription, "Reward Description");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"rewards"=> { "reward"=> {
      "name" => rewardName,
      "description" => rewardDescription
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}"
    response = connection.post(signature, resource_url, query_params, body)
    puts "Response is #{response}"
    reward = RewardResponseBuilder.new()
    rewardObj = reward.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return rewardObj
end
earn_rewards(gameName,gameUserName,rewardName,rewardPoints) click to toggle source

Adds the reward points to an users account. Reward Points can be earned by the user which can be redeemed later.

@param gameName

- Name of the game for which reward points have to be added

@param gameUserName

- The user for whom reward points have to be added

@param rewardName

- The rewards for which reward points have to be added

@param rewardsPoints

- The points that have to be added

@return Reward object containing the rewardpoints that has been added

@raise App42Exception

# File lib/game/RewardService.rb, line 249
def earn_rewards(gameName,gameUserName,rewardName,rewardPoints)
  puts "Earn Rewards Called "
  puts "Base url #{@base_url}"
  response = nil;
  rewardObj = nil;
  rewardObj = Reward.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(gameName, "Game Name");
  util.throwExceptionIfNullOrBlank(gameUserName, "User Name");
  util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");

  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"rewards"=> { "reward"=> {
      "gameName" => gameName,
      "userName" => gameUserName,
      "name" => rewardName,
      "points" => rewardPoints
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/earn"
    response = connection.post(signature, resource_url, query_params, body)
    puts "Response is #{response}"
    reward = RewardResponseBuilder.new()
    rewardObj = reward.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return rewardObj
end
get_all_rewards() click to toggle source

Fetches all the Rewards

@return ArrayList of Reward objects containing all the rewards of the App

@raise App42Exception

# File lib/game/RewardService.rb, line 109
def get_all_rewards()
  puts "Get All Rewards Called "
  puts "Base url #{@base_url}"
  response = nil;
  rewardList = nil;
  rewardList = Array.new
  util = Util.new
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}"
    response = connection.get(signature, resource_url, query_params)
    puts "Response is #{response}"
    reward = RewardResponseBuilder.new()
    rewardList = reward.buildArrayRewards(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return rewardList
end
get_all_rewards_by_paging(max, offset) click to toggle source

Fetches all the Rewards by paging.

@param max

- Maximum number of records to be fetched

@param offset

- From where the records are to be fetched

@return ArrayList of Reward objects containing all the rewards of the App

@raise App42Exception

# File lib/game/RewardService.rb, line 152
def get_all_rewards_by_paging(max, offset)
  puts "get_all_rewards_by_paging Called "
  puts "Base url #{@base_url}"
  response = nil;
  rewardList = nil;
  rewardList = Array.new
  util = Util.new
  util.validateMax(max);
  util.throwExceptionIfNullOrBlank(max, "Max");
  util.throwExceptionIfNullOrBlank(offset, "Offset");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("max", "" + (max.to_i).to_s)
    params.store("offset", "" + (offset.to_i).to_s)
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/paging/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
    response = connection.get(signature, resource_url, query_params)
    puts "Response is #{response}"
    reward = RewardResponseBuilder.new()
    rewardList = reward.buildArrayRewards(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return rewardList
end
get_all_rewards_count() click to toggle source

Fetches all the Rewards

@return ArrayList of Reward objects containing all the rewards of the App

@raise App42Exception

# File lib/game/RewardService.rb, line 407
def get_all_rewards_count()
  puts "get_all_rewards_count Called "
  puts "Base url #{@base_url}"
  response = nil;
  responseObj = App42Response.new
  util = Util.new
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/count"
    response = connection.get(signature, resource_url, query_params)
    responseObj.strResponse=(response)
    responseObj.isResponseSuccess=(true)
    responseObj = RewardResponseBuilder.new()
    responseObj.getTotalRecords(response);
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return responseObj
end
get_game_reward_points_for_user(gameName, userName) click to toggle source

Fetches the reward points for a particular user

@param gameName

- Name of the game for which reward points have to be fetched

@param userName

- The user for whom reward points have to be fetched

@return Reward object containing the reward points for the specified user

@raise App42Exception

# File lib/game/RewardService.rb, line 364
def get_game_reward_points_for_user(gameName, userName)
  puts "Get Game Reward Points For User Called "
  puts "Base url #{@base_url}"
  response = nil;
  rewardObj = nil;
  rewardObj = Reward.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(gameName, "Game Name");
  util.throwExceptionIfNullOrBlank(userName, "User Name");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("gameName", gameName)
    params.store("userName", userName)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/#{gameName}/#{userName}"
    response = connection.get(signature, resource_url, query_params)
    puts "Response is #{response}"
    reward = RewardResponseBuilder.new()
    rewardObj = reward.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return rewardObj
end
get_reward_by_name(rewardName) click to toggle source

Retrieves the reward for the specified name

@param rewardName

- Name of the reward that has to be fetched

@return Reward object containing the reward based on the rewardName

@raise App42Exception

# File lib/game/RewardService.rb, line 198
def get_reward_by_name(rewardName)
  puts "Get reward By Name Called "
  puts "Base url #{@base_url}"
  response = nil;
  rewardObj = nil;
  rewardObj = Reward.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("name", rewardName)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/#{rewardName}"
    response = connection.get(signature, resource_url, query_params)
    puts "Response is #{response}"
    reward = RewardResponseBuilder.new()
    rewardObj = reward.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return rewardObj
end
redeem_rewards(gameName,gameUserName,rewardName,rewardPoints) click to toggle source

Deducts the rewardpoints from the earned rewards by a user.

@param gameName

- Name of the game for which reward points have to be deducted

@param gameUserName

- The user for whom reward points have to be deducted

@param rewardName

- The rewards for which reward points have to be deducted

@param rewardsPoints

- The points that have to be deducted

@return Reward object containing the rewardpoints that has been deducted

@raise App42Exception

# File lib/game/RewardService.rb, line 309
def redeem_rewards(gameName,gameUserName,rewardName,rewardPoints)
  puts "Redeem Rewards Called "
  puts "Base url #{@base_url}"
  response = nil;
  rewardObj = nil;
  rewardObj = Reward.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(gameName, "Game Name");
  util.throwExceptionIfNullOrBlank(gameUserName, "Game User Name");
  util.throwExceptionIfNullOrBlank(rewardName, "Reward Name");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"rewards"=> { "reward"=> {
      "gameName" => gameName,
      "userName" => gameUserName,
      "name" => rewardName,
      "points" => rewardPoints
      }}}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    puts query_params
    params.store("body", body)
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/redeem"
    response = connection.post(signature, resource_url, query_params, body)
    puts "Response is #{response}"
    reward = RewardResponseBuilder.new()
    rewardObj = reward.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return rewardObj
end