class Venice::Client
Attributes
verification_url[RW]
Public Class Methods
development()
click to toggle source
# File lib/venice/client.rb, line 14 def development client = self.new client.verification_url = ITUNES_DEVELOPMENT_RECEIPT_VERIFICATION_ENDPOINT client end
new()
click to toggle source
# File lib/venice/client.rb, line 27 def initialize @verification_url = ENV['IAP_VERIFICATION_ENDPOINT'] end
production()
click to toggle source
# File lib/venice/client.rb, line 20 def production client = self.new client.verification_url = ITUNES_PRODUCTION_RECEIPT_VERIFICATION_ENDPOINT client end
Public Instance Methods
verify!(data, options = {})
click to toggle source
# File lib/venice/client.rb, line 31 def verify!(data, options = {}) @verification_url ||= ITUNES_DEVELOPMENT_RECEIPT_VERIFICATION_ENDPOINT @shared_secret = options[:shared_secret] json = json_response_from_verifying_data(data) status, receipt_attributes = json['status'].to_i, json['receipt'] case status when 0, 21006 attributes = (receipt_attributes || {}).merge({ 'latest_receipt' => json['latest_receipt'], 'latest_receipt_info' => json['latest_receipt_info'], }) Receipt.new(attributes) else raise Receipt::VerificationError.new(status, receipt_attributes) end end
Private Instance Methods
json_response_from_verifying_data(data)
click to toggle source
# File lib/venice/client.rb, line 52 def json_response_from_verifying_data(data) parameters = { 'receipt-data' => data } parameters['password'] = @shared_secret if @shared_secret uri = URI(@verification_url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER request = Net::HTTP::Post.new(uri.request_uri) request['Accept'] = "application/json" request['Content-Type'] = "application/json" request.body = parameters.to_json response = http.request(request) JSON.parse(response.body) end