class IAPVerifier::Request

Constants

PRODUCTION_URL
SANDBOX_URL

Public Class Methods

new(receipt) click to toggle source
# File lib/iap_verifier/request.rb, line 6
def initialize(receipt)
  if receipt.nil? || (/\A[[:space:]]*\z/ === receipt)
    raise Error::EmptyReceipt.new
  end

  @request_data = {
    'receipt-data' => receipt
  }
end

Public Instance Methods

response() click to toggle source
# File lib/iap_verifier/request.rb, line 16
def response
  verify_with_retry(@request_data)
end

Private Instance Methods

verify(request_data, url) click to toggle source
# File lib/iap_verifier/request.rb, line 32
def verify(request_data, url)
  uri = URI(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 = request_data.to_json

  response = http.request(request)

  ResponseData.new(response.body)
end
verify_with_retry(request_data) click to toggle source
# File lib/iap_verifier/request.rb, line 22
def verify_with_retry(request_data)
  response_data = verify(request_data, PRODUCTION_URL)

  if response_data.sandbox?
    response_data = verify(request_data, SANDBOX_URL)
  end

  response_data
end