class App42::Review::ReviewService

The service is a Review & Rating manager for any item. The item can be anything which has an id

e.g. App on a AppStore/Marketplace, items in a catalogue, articles, blogs etc. It manages the comments and its associated rating. It also provides methods to fetch average, highest etc. Reviews. Reviews can be also be muted or unmuted if it has any objectionable content.

@see Review

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/review/ReviewService.rb, line 32
def initialize(api_key, secret_key, base_url)
  puts "Session Service->initialize"
  @api_key = api_key
  @secret_key = secret_key
  @base_url = base_url
  @resource = "review"
  @version = "1.0"
end

Public Instance Methods

create_review(userID, itemID, reviewComment, reviewRating) click to toggle source

Creates review for the specified item on the cloud

@param userId

- The user who has created the review

@param itemId

- The item for which the review has to be created

@param reviewComment

- The review comment

@param reviewRating

- Review rating in double

@return Review object containing the review which has been created

@raise App42Exception

# File lib/review/ReviewService.rb, line 58
def create_review(userID, itemID, reviewComment, reviewRating)
  puts "create_review Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewObj = nil
  reviewObj = Review.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(userID, "User Id");
  util.throwExceptionIfNullOrBlank(itemID, "Item Id");
  util.throwExceptionIfNullOrBlank(reviewComment, "Review Comment");
  util.throwExceptionIfNullOrBlank(reviewRating, "Review Rating");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"review"=> {
      "userId" => userID,
      "itemId" => itemID,
      "comment" => reviewComment,
      "rating" => (reviewRating.to_i).to_s
      }}}.to_json
    puts "Body #{body}"
    params = Hash.new
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}"
    response = connection.post(signature, resource_url, query_params, body)
    review = ReviewResponseBuilder.new
    reviewObj = review.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewObj
end
get_all_reviews() click to toggle source

Fetches all reviews for the App

@return ArrayList of Review object containing all the reviews for the App

@raise App42Exception

# File lib/review/ReviewService.rb, line 108
def get_all_reviews()
  puts "getAllAttribute Review Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewList = nil
  reviewList = 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
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}"
    response = connection.get(signature, resource_url, query_params)
    review = ReviewResponseBuilder.new
    reviewList = review.buildArrayResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewList
end
get_all_reviews_by_paging(max, offset) click to toggle source

Fetches all reviews for the App by Paging.

@param max

- Maximum number of records to be fetched

@param offset

- From where the records are to be fetched

@return ArrayList of Review object containing all the reviews for the App

@raise App42Exception

# File lib/review/ReviewService.rb, line 151
def get_all_reviews_by_paging(max, offset)
  puts "get_all_reviews_by_paging Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewList = nil
  reviewList = 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);
    puts query_params
    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)
    review = ReviewResponseBuilder.new
    reviewList = review.buildArrayResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewList
end
get_all_reviews_count() click to toggle source

Fetches count of all reviews for the App

@return App42Response containing count of all the reviews for the App

@raise App42Exception

# File lib/review/ReviewService.rb, line 513
def get_all_reviews_count()
  puts "get_all_reviews_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 = ReviewResponseBuilder.new()
    responseObj.getTotalRecords(response);
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return responseObj
end
get_average_review_by_item(itemId) click to toggle source

Fetches the average review for the specified itemId

@param itemId

- The item for which the average review has to be fetched

@return Review object containing the average review for a item

@raise App42Exception

# File lib/review/ReviewService.rb, line 379
def get_average_review_by_item(itemId)
  puts "get_average_review_by_item Review Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewObj = nil
  reviewObj = Review.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(itemId, "Item Id");
  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("itemId", itemId);
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/#{itemId}/average"
    response = connection.get(signature, resource_url, query_params)
    review = ReviewResponseBuilder.new
    reviewObj = review.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewObj
end
get_highest_review_by_item(itemId) click to toggle source

Fetches the highest review for the specified itemId

@param itemId

- The item for which the highest review has to be fetched

@return Review object containing the highest review for a item

@raise App42Exception

# File lib/review/ReviewService.rb, line 292
def get_highest_review_by_item(itemId)
  puts "get_highest_review_by_item Review Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewObj = nil
  reviewObj = Review.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(itemId, "Item Id");
  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 params
    params.store("itemId", itemId);
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/#{itemId}/highest"
    response = connection.get(signature, resource_url, query_params)
    review = ReviewResponseBuilder.new
    reviewObj = review.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewObj
end
get_lowest_review_by_item(itemId) click to toggle source

Fetches the lowest review for the specified itemId

@param itemId

- The item for which the lowest review has to be fetched

@return Review object containing the lowest review for a item

@raise App42Exception

# File lib/review/ReviewService.rb, line 336
def get_lowest_review_by_item(itemId)
  puts "get_lowest_review_by_item Review Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewObj = nil
  reviewObj = Review.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(itemId, "Item Id");
  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("itemId", itemId);
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/#{itemId}/lowest"
    response = connection.get(signature, resource_url, query_params)
    review = ReviewResponseBuilder.new
    reviewObj = review.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewObj
end
get_review_by_item_by_paging(itemId, max, offset) click to toggle source

Fetches All Reviews based on the itemId by Paging.

@param itemId

- The item for which reviews have to be fetched

@param max

- Maximum number of records to be fetched

@param offset

- From where the records are to be fetched

@return ArrayList of Review object containing all the reviews for a item

@raise App42Exception

# File lib/review/ReviewService.rb, line 244
def get_review_by_item_by_paging(itemId, max, offset)
  puts "get_review_by_item_by_paging Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewList = nil;
  reviewList = Array.new
  util = Util.new
  util.validateMax(max);
  util.throwExceptionIfNullOrBlank(max, "Max");
  util.throwExceptionIfNullOrBlank(offset, "Offset");
  util.throwExceptionIfNullOrBlank(itemId, "Item Id");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    params = Hash.new
    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);
    params.store("itemId", "" +  itemId);
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/item/#{itemId}/#{(max.to_i).to_s}/#{(offset.to_i).to_s}"
    response = connection.get(signature, resource_url, query_params)
    review = ReviewResponseBuilder.new
    reviewList = review.buildArrayResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewList
end
get_reviews_by_item(itemId) click to toggle source

Fetches All Reviews based on the itemId

@param itemId

- The item for which reviews have to be fetched

@return ArrayList of Review object containing all the reviews for a item

@raise App42Exception

# File lib/review/ReviewService.rb, line 197
def get_reviews_by_item(itemId)
  puts "get_reviews_by_item Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewList = nil;
  reviewList = Array.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(itemId, "Item Id");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    params = Hash.new
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("itemId", itemId);
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/item/#{itemId}"
    response = connection.get(signature, resource_url, query_params)
    review = ReviewResponseBuilder.new
    reviewList = review.buildArrayResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewList
end
get_reviews_count_by_item(itemId) click to toggle source

Fetches count of All Reviews based on the itemId

@param itemId

- The item for which count of reviews have to be fetched

@return App42Response containing count of all the reviews for a item

@raise App42Exception

# File lib/review/ReviewService.rb, line 555
def get_reviews_count_by_item(itemId)
  puts "get_reviews_count_by_item Called "
  puts "Base url #{@base_url}"
  response = nil;
  responseObj = App42Response.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(itemId, "Item Id");
  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("itemId", itemId)
    puts query_params
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/item/#{itemId}/count"
    response = connection.get(signature, resource_url, query_params)
    responseObj.strResponse=(response)
    responseObj.isResponseSuccess=(true)
    responseObj = ReviewResponseBuilder.new()
    responseObj.getTotalRecords(response);
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return responseObj
end
mute(reviewId) click to toggle source

Mutes the specified review

@param reviewId

- The Id of the review which has to be muted

@return App42Response if muted successfully

@raise App42Exception

# File lib/review/ReviewService.rb, line 422
def mute(reviewId)
  puts "mute review Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewObj = nil
  reviewObj = Review.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(reviewId, "Review Id");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"review"=> {
      "id" => reviewId
      }}}.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}/mute"
    response = connection.put(signature, resource_url, query_params, body)
    review = ReviewResponseBuilder.new
    reviewObj = review.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewObj
end
unmute(reviewId) click to toggle source

UnMutes the specified review

@param reviewId

- The Id of the review which has to be unmuted

@return App42Response if unmuted successfully

@raise App42Exception

# File lib/review/ReviewService.rb, line 469
def unmute(reviewId)
  puts "unmute review Called "
  puts "Base url #{@base_url}"
  response = nil
  reviewObj = nil
  reviewObj = Review.new()
  util = Util.new
  util.throwExceptionIfNullOrBlank(reviewId, "Review Id");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"review"=> {
      "id" => reviewId
      }}}.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}/unmute"
    response = connection.put(signature, resource_url, query_params, body)
    review = ReviewResponseBuilder.new
    reviewObj = review.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return reviewObj
end