Class: Level3Api
- Inherits:
-
Object
- Object
- Level3Api
- Defined in:
- lib/level3-api.rb
Overview
–TODO use nokogiri w/ xsi?
Instance Method Summary collapse
-
#_from_xml(xml) ⇒ Object
Attempt to mash XML into a parseable ruby structure.
- #formatted_date ⇒ Object
- #generate_auth_string(service, resource, method) ⇒ Object
-
#initialize(key_id, secret) ⇒ Level3Api
constructor
key_id = Level 3 API Key secret = Level 3 API Secret.
- #request(service = "/accessGroups", resource = "/v1.0", method = "GET", params = {}) ⇒ Object
-
#set_date ⇒ Object
Time is only considered valid for authentication for 15 minutes on level3…
Constructor Details
#initialize(key_id, secret) ⇒ Level3Api
key_id = Level 3 API Key secret = Level 3 API Secret
13 14 15 16 17 18 19 20 |
# File 'lib/level3-api.rb', line 13 def initialize(key_id,secret) @api_url_base = "https://ws.level3.com" @key_id = key_id # required @secret = secret # required raise 'No key_id' unless @key_id raise 'No secret' unless @secret @content_type = 'text/xml' end |
Instance Method Details
#_from_xml(xml) ⇒ Object
Attempt to mash XML into a parseable ruby structure
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/level3-api.rb', line 42 def _from_xml(xml) return XmlSimple.xml_in(xml, { 'ForceArray'=>['accessGroup'], 'GroupTags'=>{ 'services'=>'service', 'metros'=>'metro', 'networkIdentifiers'=>'ni' }, 'KeyAttr'=>['id','name'] }) end |
#formatted_date ⇒ Object
26 27 28 |
# File 'lib/level3-api.rb', line 26 def formatted_date return @current_date.gmtime.strftime("%a, %d %b %Y %H:%M:%S GMT") end |
#generate_auth_string(service, resource, method) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/level3-api.rb', line 29 def generate_auth_string(service,resource,method) authstring = "%s\n%s%s\n%s\n%s\n" % [ formatted_date, service.chomp('/'), resource.chomp('/'), @content_type, method ] hmac = HMAC::SHA1.new(@secret) hmac.update(authstring) return "MPA %s:%s" % [@key_id, Base64.encode64(hmac.digest)] end |
#request(service = "/accessGroups", resource = "/v1.0", method = "GET", params = {}) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/level3-api.rb', line 53 def request(service="/accessGroups",resource="/v1.0",method="GET",params={}) set_date authstr = generate_auth_string(service,resource,method) url = "#{@api_url_base}#{service}#{resource}" #puts "request: url=#{url}" xml = RestClient.get url, :content_type => @content_type, :authorization => authstr, :date => formatted_date, :verify_ssl => OpenSSL::SSL::VERIFY_PEER, :params => params return _from_xml(xml) end |
#set_date ⇒ Object
Time is only considered valid for authentication for 15 minutes on level3… We reset it once each pass just to make sure it does not expire
23 24 25 |
# File 'lib/level3-api.rb', line 23 def set_date @current_date = Time.now end |