class Roku::Iap::Client
Constants
- PRODUCTION_HOST
Public Class Methods
new(dev_token)
click to toggle source
# File lib/roku/iap/client.rb, line 8 def initialize(dev_token) @dev_token = dev_token @host = PRODUCTION_HOST end
Public Instance Methods
cancel_subscription(transaction_id, cancellation_date, partner_ref_id="")
click to toggle source
# File lib/roku/iap/client.rb, line 23 def cancel_subscription(transaction_id, cancellation_date, partner_ref_id="") path = "/listen/transaction-service.svc/cancel-subscription" request_body_json = { :partnerAPIKey => @dev_token, :transactionId => transaction_id, :cancellationDate => cancellation_date, :partnerReferenceId => partner_ref_id }.to_json post_data(path, request_body_json) end
refund_subscription(transaction_id, amount, partner_ref_id="", comments="")
click to toggle source
# File lib/roku/iap/client.rb, line 34 def refund_subscription(transaction_id, amount, partner_ref_id="", comments="") unless amount.match(/\d+/) # The Roku API returns 400 if amount is not parsable raise Roku::Iap::Exceptions::TypeError, "Ensure amount is integer or float!" end path = "/listen/transaction-service.svc/refund-subscription" request_body_json = { :partnerAPIKey => @dev_token, :transactionId => transaction_id, :amount => amount, :partnerReferenceId => partner_ref_id, :comments => comments }.to_json post_data(path, request_body_json.to_s) end
validate_refund(refund_id)
click to toggle source
# File lib/roku/iap/client.rb, line 18 def validate_refund(refund_id) path = "/listen/transaction-service.svc/validate-refund/#{@dev_token}/#{refund_id}" get_data(path) end
validate_transaction(transaction_id)
click to toggle source
# File lib/roku/iap/client.rb, line 13 def validate_transaction(transaction_id) path = "/listen/transaction-service.svc/validate-transaction/#{@dev_token}/#{transaction_id}" get_data(path) end
Protected Instance Methods
get_data(path)
click to toggle source
# File lib/roku/iap/client.rb, line 54 def get_data(path) uri = URI.parse "#{@host}#{path}" req = Net::HTTP::Get.new uri.request_uri res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') { |http| http.request req } Roku::Iap::Response.new res end
post_data(path, request_body_json)
click to toggle source
# File lib/roku/iap/client.rb, line 61 def post_data(path, request_body_json) uri = URI.parse "#{@host}#{path}" req = Net::HTTP::Post.new uri.request_uri res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| req.content_type = "application/json" req.body = request_body_json http.request req end Roku::Iap::Response.new res end