Class: EAAL::API
- Inherits:
-
Object
- Object
- EAAL::API
- Defined in:
- lib/eaal/api.rb
Overview
Instance Attribute Summary collapse
-
#keyid ⇒ Object
Returns the value of attribute keyid.
-
#scope ⇒ Object
Returns the value of attribute scope.
-
#vcode ⇒ Object
Returns the value of attribute vcode.
Instance Method Summary collapse
-
#initialize(keyid = nil, vcode = nil, scope = "account") ⇒ API
constructor
constructor Expects: * keyID (String | Integer) the keyID * vCode (String) the vCode * scope (String) defaults to account.
-
#method_missing(method, *args) ⇒ Object
create an xml request according to the method called this is used to dynamicaly create api calls and should usually not be called directly * method (const) * args.
- #request_path(name) ⇒ Object
-
#request_xml(scope, name, opts, cache_only = false) ⇒ Object
make a request to the api.
Constructor Details
#initialize(keyid = nil, vcode = nil, scope = "account") ⇒ API
constructor Expects:
-
keyID (String | Integer) the keyID
-
vCode (String) the vCode
-
scope (String) defaults to account
16 17 18 19 20 21 22 23 |
# File 'lib/eaal/api.rb', line 16 def initialize(keyid = nil, vcode = nil, scope="account") keyid ||= EAAL.config.keyid vcode ||= EAAL.config.vcode scope = EAAL.config.scope if EAAL.config.scope self.keyid = keyid.to_s self.vcode = vcode.to_s self.scope = scope.to_s end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
create an xml request according to the method called this is used to dynamicaly create api calls and should usually not be called directly
-
method (const)
-
args
30 31 32 33 34 35 36 |
# File 'lib/eaal/api.rb', line 30 def method_missing(method, *args) scope = self.scope args_hash = args.first cache_only = (args_hash && args_hash.delete(:cache_only)) || false args_hash = {} unless args_hash self.request_xml(scope, method.id2name, args_hash, cache_only) end |
Instance Attribute Details
#keyid ⇒ Object
Returns the value of attribute keyid.
9 10 11 |
# File 'lib/eaal/api.rb', line 9 def keyid @keyid end |
#scope ⇒ Object
Returns the value of attribute scope.
9 10 11 |
# File 'lib/eaal/api.rb', line 9 def scope @scope end |
#vcode ⇒ Object
Returns the value of attribute vcode.
9 10 11 |
# File 'lib/eaal/api.rb', line 9 def vcode @vcode end |
Instance Method Details
#request_path(name) ⇒ Object
86 87 88 |
# File 'lib/eaal/api.rb', line 86 def request_path(name) "/#{scope}/#{name}.xml.aspx" end |
#request_xml(scope, name, opts, cache_only = false) ⇒ Object
make a request to the api. will use cache if set. usually not called by the user directly
-
scope (String)
-
name (String)
-
opts (Hash)
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/eaal/api.rb', line 43 def request_xml(scope, name, opts, cache_only = false) opts = EAAL.additional_request_parameters.merge(opts) xml = EAAL.cache.load(self.keyid, self.vcode, scope, name,opts) if (not xml) && (not cache_only) conn = Faraday.new(:url => "#{EAAL.api_base}") do |faraday| faraday.request :url_encoded faraday.adapter Faraday.default_adapter end response = conn.get( request_path(name), opts.merge({ :keyid => self.keyid, :vcode => self.vcode})) case response.status when 200 # Nothing when 404 raise EAAL::Exception::APINotFoundError.new("The requested API (#{scope} / #{name}) could not be found.") else if response.body doc = Hpricot.XML(response.body) result = EAAL::Result.new(scope.capitalize + name, doc) else raise EAAL::Exception::HTTPError.new(response.status), "An HTTP Error occurred, body: #{response.body}" end end EAAL.cache.save(self.keyid, self.vcode, scope,name,opts, response.body) xml = response.body end if xml doc = Hpricot.XML(xml) result = EAAL::Result.new(scope.capitalize + name, doc) else result = nil end end |