class Amazon::Iap2::Result

Constants

VALID_ATTRIBUTES

Attributes

beta_product[RW]
cancel_date[RW]
cancel_time[RW]
parent_product_id[RW]
product_id[RW]
product_type[RW]
purchase_date[RW]
purchase_time[RW]
quantity[RW]
receipt_id[RW]
renewal_date[RW]
term[RW]
term_sku[RW]
test_transaction[RW]

Public Class Methods

new(response) click to toggle source
# File lib/amazon/iap2/result.rb, line 31
def initialize(response)
  case response.code.to_i
  when 200
    parsed = JSON.load(response.body)

    raise Amazon::Iap2::Exceptions::EmptyResponse unless parsed

    if parsed.has_key? 'purchaseDate'
      parsed['purchaseTime'] = parsed['purchaseDate'].nil? ? nil : Time.at(parsed['purchaseDate'] / 1000)
    end
    if parsed.has_key? 'cancelDate'
      parsed['cancelTime'] = parsed['cancelDate'].nil? ? nil : Time.at(parsed['cancelDate'] / 1000)
    end

    parsed.each do |key, value|
      underscore = key.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z])/, '\1_\2').tr('-', '_').downcase
      send "#{underscore}=", value if VALID_ATTRIBUTES.include?(underscore.to_s.downcase)
    end
  when 400 then raise Amazon::Iap2::Exceptions::InvalidTransaction
  when 496 then raise Amazon::Iap2::Exceptions::InvalidSharedSecret
  when 497 then raise Amazon::Iap2::Exceptions::InvalidUserId
  when 500 then raise Amazon::Iap2::Exceptions::InternalError
  else raise Amazon::Iap2::Exceptions::General
  end
end