class TopsConnect::Client
Attributes
community_api_key[R]
community_id[R]
Public Class Methods
new(community_id, community_api_key)
click to toggle source
# File lib/tops_connect/client.rb, line 20 def initialize(community_id, community_api_key) authorization = Base64.strict_encode64 [ TopsConnect.configuration.client_id, TopsConnect.configuration.software_key ].join(':') self.class.headers('authorization' => "Basic #{authorization}") @subscription_key = TopsConnect.configuration.subscription_key switch_community(community_id, community_api_key) end
Public Instance Methods
get(endpoint, headers: {}, query: {})
click to toggle source
# File lib/tops_connect/client.rb, line 38 def get(endpoint, headers: {}, query: {}) response = self.class.get( "/#{TopsConnect.configuration.zone}/api#{endpoint}", query: query.merge('subscription-key' => @subscription_key), headers: headers.merge('community-api-key' => @community_api_key) ) raise_exception(response) unless response.code == 200 response.parsed_response end
post(endpoint, body: {}, headers: {}, query: {})
click to toggle source
# File lib/tops_connect/client.rb, line 63 def post(endpoint, body: {}, headers: {}, query: {}) response = self.class.post( "/#{TopsConnect.configuration.zone}/api#{endpoint}", query: query.merge('subscription-key' => @subscription_key), headers: headers.merge('community-api-key' => @community_api_key), body: body.to_json ) raise_exception(response) unless response.code == 200 response.parsed_response end
put(endpoint, body: {}, headers: {}, query: {})
click to toggle source
# File lib/tops_connect/client.rb, line 50 def put(endpoint, body: {}, headers: {}, query: {}) response = self.class.put( "/#{TopsConnect.configuration.zone}/api#{endpoint}", query: query.merge('subscription-key' => @subscription_key), headers: headers.merge('community-api-key' => @community_api_key), body: body.to_json ) raise_exception(response) unless response.code == 200 response.parsed_response end
switch_community(community_id, community_api_key)
click to toggle source
# File lib/tops_connect/client.rb, line 33 def switch_community(community_id, community_api_key) @community_id = community_id @community_api_key = community_api_key end
Protected Instance Methods
raise_exception(response)
click to toggle source
# File lib/tops_connect/client.rb, line 78 def raise_exception(response) case response.code when 404 then raise TopsConnect::NotFoundError, response when 400..499 then raise TopsConnect::ClientError, response when 500..599 message = TopsConnect::ApiError.error_message(response.parsed_response) # These errors can largely be ignored - it's not our fault raise TopsConnect::TimeoutError, response if message['Timeout expired'] raise TopsConnect::InternalError, response else # As far as I'm aware, Tops does not return 100 - 199 or 205 - 399. raise TopsConnect::ApiError, response end end