Class: Hamburglar::Gateways::Base
- Inherits:
-
Object
- Object
- Hamburglar::Gateways::Base
- Defined in:
- lib/hamburglar/gateways/base.rb
Overview
Hamburglar::Gateways::Base is the main class that handles sending API requests to upstream providers. All other gateways should inherit from this class
Direct Known Subclasses
Constant Summary
- URL_REGEX =
A regex for matching URLs with http or https This will be used to verify API urls
/https?:\/\/[\S]+/
Class Attribute Summary (collapse)
-
+ (Object) api_url
readonly
The API URL.
Instance Attribute Summary (collapse)
-
- (Object) errors
readonly
Errors returned when validating or submitting a request.
-
- (Object) params
readonly
The parameters for the API request.
-
- (Object) response
readonly
Response returned by an API call.
Class Method Summary (collapse)
-
+ (Object) required_params
Required parameters for an API call.
-
+ (Object) set_api_url(url = '')
Get or set the API URL for the gateway.
-
+ (Object) set_required_params(*params)
Set required parameters for an API call.
Instance Method Summary (collapse)
-
- (Base) initialize(params = {})
constructor
A new instance of Base.
-
- (Object) submit
Submit a request upstream to generate a fraud report.
-
- (Object) validate(revalidate = false)
(also: #valid?)
Validate presence of required_params.
-
- (Object) validate!
Validate presence of required_params.
Constructor Details
- (Base) initialize(params = {})
A new instance of Base
29 30 31 32 33 |
# File 'lib/hamburglar/gateways/base.rb', line 29 def initialize(params = {}) @params = Hash[Hamburglar.config.credentials].merge(params) @errors = {} @response = {} end |
Class Attribute Details
+ (Object) api_url (readonly)
The API URL
26 27 28 |
# File 'lib/hamburglar/gateways/base.rb', line 26 def api_url @api_url end |
Instance Attribute Details
- (Object) errors (readonly)
Errors returned when validating or submitting a request
19 20 21 |
# File 'lib/hamburglar/gateways/base.rb', line 19 def errors @errors end |
- (Object) params (readonly)
The parameters for the API request
16 17 18 |
# File 'lib/hamburglar/gateways/base.rb', line 16 def params @params end |
- (Object) response (readonly)
Response returned by an API call
22 23 24 |
# File 'lib/hamburglar/gateways/base.rb', line 22 def response @response end |
Class Method Details
+ (Object) required_params
Required parameters for an API call
50 51 52 |
# File 'lib/hamburglar/gateways/base.rb', line 50 def self.required_params @required_params || [] end |
+ (Object) set_api_url(url = '')
Get or set the API URL for the gateway
36 37 38 39 40 41 42 |
# File 'lib/hamburglar/gateways/base.rb', line 36 def self.set_api_url(url = '') if url.match URL_REGEX @api_url = url else raise Hamburglar::InvalidURL, url end end |
+ (Object) set_required_params(*params)
Set required parameters for an API call
45 46 47 |
# File 'lib/hamburglar/gateways/base.rb', line 45 def self.set_required_params(*params) @required_params = params end |
Instance Method Details
- (Object) submit
Submit a request upstream to generate a fraud report
80 81 82 83 84 85 86 |
# File 'lib/hamburglar/gateways/base.rb', line 80 def submit return false unless valid? url = "#{self.class.api_url}?#{query_string}" if res = fetch(url) @response = parse_response(res.body) end end |
- (Object) validate(revalidate = false) Also known as: valid?
Validate presence of required_params
Returns false if a parameter isn't set
57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/hamburglar/gateways/base.rb', line 57 def validate(revalidate = false) @validated = false if revalidate unless @validated @errors[:missing_parameters] = [] self.class.required_params.each do |req| unless @params.has_key?(req) @errors[:missing_parameters] << req end end @validated = true end @errors[:missing_parameters].empty? end |
- (Object) validate!
Validate presence of required_params
Raises Hamburglar::InvalidRequest if validation fails
75 76 77 |
# File 'lib/hamburglar/gateways/base.rb', line 75 def validate! validate || raise(Hamburglar::InvalidRequest) end |