class Maxmind::ChargebackRequest
Constants
- DefaultTimeout
Attributes
default_request_type[RW]
timeout[RW]
chargeback_code[RW]
Optional Fields
client_ip[RW]
Required Fields
fraud_score[RW]
Optional Fields
maxmind_id[RW]
Optional Fields
transaction_id[RW]
Optional Fields
Public Class Methods
new(attrs={})
click to toggle source
# File lib/maxmind/chargeback_request.rb, line 18 def initialize(attrs={}) self.attributes = attrs end
Public Instance Methods
attributes=(attrs={})
click to toggle source
# File lib/maxmind/chargeback_request.rb, line 22 def attributes=(attrs={}) attrs.each do |k, v| self.send("#{k}=", v) end end
process()
click to toggle source
# File lib/maxmind/chargeback_request.rb, line 33 def process process! rescue Exception => e false end
process!()
click to toggle source
# File lib/maxmind/chargeback_request.rb, line 28 def process! resp = post(query) Maxmind::ChargebackResponse.new(resp.message, resp.code) end
query()
click to toggle source
# File lib/maxmind/chargeback_request.rb, line 39 def query validate required_fields = { :ip_address => @client_ip, } optional_fields = { :chargeback_code => @chargeback_code, :fraud_score => @fraud_score, :maxmind_id => @maxmind_id, :transaction_id => @transaction_id } field_set = required_fields.merge(optional_fields) field_set.reject {|k, v| v.nil? }.to_json end
Protected Instance Methods
validate()
click to toggle source
# File lib/maxmind/chargeback_request.rb, line 88 def validate raise ArgumentError, 'License key is required' unless Maxmind::license_key raise ArgumentError, 'User ID is required' unless Maxmind::user_id raise ArgumentError, 'IP address is required' unless client_ip end
Private Instance Methods
post(query_params)
click to toggle source
Upon a failure at the first URL, will automatically retry with the second & third ones before finally raising an exception Returns an HTTPResponse object
# File lib/maxmind/chargeback_request.rb, line 62 def post(query_params) servers ||= SERVERS.map{|hostname| "https://#{hostname}/minfraud/chargeback"} url = URI.parse(servers.shift) req = Net::HTTP::Post.new(url.path, initheader = {'Content-Type' =>'application/json'}) req.basic_auth Maxmind::user_id, Maxmind::license_key req.body = query_params h = Net::HTTP.new(url.host, url.port) h.use_ssl = true h.verify_mode = OpenSSL::SSL::VERIFY_NONE # set some timeouts h.open_timeout = 60 # this blocks forever by default, lets be a bit less crazy. h.read_timeout = self.class.timeout || DefaultTimeout h.ssl_timeout = self.class.timeout || DefaultTimeout h.start { |http| http.request(req) } rescue Exception => e retry if servers.size > 0 raise e end