lib/tops_connect/client.rb in tops_connect-0.4.3.2 vs lib/tops_connect/client.rb in tops_connect-0.5.0

- old
+ new

@@ -1,29 +1,34 @@ # frozen_string_literal: true + module TopsConnect class Client include HTTParty include TopsConnect::Communities include TopsConnect::Owners include TopsConnect::Properties attr_reader :community_id, :community_api_key headers 'Content-Type' => 'application/json' - headers 'api-version' => '1' - base_uri 'https://topsconnectapi.azure-api.net' + base_uri 'https://topsconnectapi.azure-api.net/v2' 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 + + def switch_community(community_id, community_api_key) @community_id = community_id @community_api_key = community_api_key end def get(endpoint, headers: {}, query: {}) @@ -36,10 +41,36 @@ raise_exception(response) unless response.code == 200 response.parsed_response end + 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 + ) + + raise_exception(response) unless response.code == 204 + + response.parsed_response + end + + 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 + ) + + raise_exception(response) unless response.code == 200 + + response.parsed_response + end + protected def raise_exception(response) case response.code when 404 @@ -52,10 +83,10 @@ # 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 201 - 399. + # As far as I'm aware, Tops does not return 100 - 199 or 205 - 399. raise TopsConnect::ApiError, response end end end end