Class: Maxmind::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/maxmind/request.rb

Constant Summary collapse

DefaultTimeout =
60

Class Attribute Summary collapse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Request

Returns a new instance of Request.



22
23
24
# File 'lib/maxmind/request.rb', line 22

def initialize(attrs={})
  self.attributes = attrs
end

Class Attribute Details

.default_request_typeObject

Returns the value of attribute default_request_type.



8
9
10
# File 'lib/maxmind/request.rb', line 8

def default_request_type
  @default_request_type
end

.timeoutObject

Returns the value of attribute timeout.



9
10
11
# File 'lib/maxmind/request.rb', line 9

def timeout
  @timeout
end

Instance Attribute Details

#accept_languageObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def accept_language
  @accept_language
end

#avs_resultObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def avs_result
  @avs_result
end

#binObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def bin
  @bin
end

#bin_nameObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def bin_name
  @bin_name
end

#bin_phoneObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def bin_phone
  @bin_phone
end

#cityObject

Required Fields



13
14
15
# File 'lib/maxmind/request.rb', line 13

def city
  @city
end

#client_ipObject

Required Fields



13
14
15
# File 'lib/maxmind/request.rb', line 13

def client_ip
  @client_ip
end

#countryObject

Required Fields



13
14
15
# File 'lib/maxmind/request.rb', line 13

def country
  @country
end

#cust_phoneObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def cust_phone
  @cust_phone
end

#cvv_resultObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def cvv_result
  @cvv_result
end

#domainObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def domain
  @domain
end

#emailObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def email
  @email
end

#forwarded_ipObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def forwarded_ip
  @forwarded_ip
end

#order_amountObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def order_amount
  @order_amount
end

#order_currencyObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def order_currency
  @order_currency
end

#passwordObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def password
  @password
end

#postalObject

Required Fields



13
14
15
# File 'lib/maxmind/request.rb', line 13

def postal
  @postal
end

#regionObject

Required Fields



13
14
15
# File 'lib/maxmind/request.rb', line 13

def region
  @region
end

#request_typeObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def request_type
  @request_type
end

#session_idObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def session_id
  @session_id
end

#shipping_addressObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def shipping_address
  @shipping_address
end

#shipping_cityObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def shipping_city
  @shipping_city
end

#shipping_countryObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def shipping_country
  @shipping_country
end

#shipping_postalObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def shipping_postal
  @shipping_postal
end

#shipping_regionObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def shipping_region
  @shipping_region
end

#transaction_idObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def transaction_id
  @transaction_id
end

#txn_typeObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def txn_type
  @txn_type
end

#user_agentObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def user_agent
  @user_agent
end

#usernameObject

Optional Fields



16
17
18
# File 'lib/maxmind/request.rb', line 16

def username
  @username
end

Instance Method Details

#attributes=(attrs = {}) ⇒ Object



26
27
28
29
30
# File 'lib/maxmind/request.rb', line 26

def attributes=(attrs={})
  attrs.each do |k, v|
    self.send("#{k}=", v)
  end
end

#processObject



67
68
69
70
71
# File 'lib/maxmind/request.rb', line 67

def process
  process!
rescue Exception => e
  false
end

#process!Object



61
62
63
64
65
# File 'lib/maxmind/request.rb', line 61

def process!
  resp = post(query)
  resp.body.encode!("utf-8", "iso-8859-1") if resp.body.respond_to?(:encode!)
  Maxmind::Response.new(resp.body, resp.code)
end

#queryObject



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/maxmind/request.rb', line 73

def query
  validate

  required_fields = {
    :i                => @client_ip,
    :city             => @city,
    :region           => @region,
    :postal           => @postal,
    :country          => @country,
    :license_key      => Maxmind::license_key
  }

  optional_fields = {
    :domain           => @domain,
    :bin              => @bin,
    :binName          => @bin_name,
    :binPhone         => @bin_phone,
    :custPhone        => @cust_phone,
    :requested_type   => @request_type || self.class.default_request_type,
    :forwardedIP      => @forwarded_ip,
    :emailMD5         => @email,
    :usernameMD5      => @username,
    :passwordMD5      => @password,
    :shipAddr         => @shipping_address,
    :shipCity         => @shipping_city,
    :shipRegion       => @shipping_region,
    :shipPostal       => @shipping_postal,
    :shipCountry      => @shipping_country,
    :txnID            => @transaction_id,
    :sessionID        => @session_id,
    :user_agent       => @user_agent,
    :accept_language  => @accept_language,
    :avs_result       => @avs_result,
    :cvv_result       => @cvv_result,
    :txn_type         => @txn_type,
    :order_amount     => @order_amount
  }

  field_set = required_fields.merge(optional_fields)
  field_set.reject {|k, v| v.nil? }
end