Sha256: 820afa505d3cf93d766e381cb715c681df7bab76070bab0407c500d6200efd85

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true
module TopsConnect
  class Client
    include HTTParty
    include TopsConnect::Communities
    include TopsConnect::Owners

    headers 'Content-Type' => 'application/json'
    headers 'api-version' => '1'

    base_uri 'https://topsconnectapi.azure-api.net'

    def initialize
      authorization = Base64.encode64 [
        TopsConnect.configuration.client_id,
        TopsConnect.configuration.software_key
      ].join(':')

      self.class.headers(
        'authorization' => "Basic #{authorization}",
        'community-api-key' => TopsConnect.configuration.community_api_key
      )

      @subscription_key = TopsConnect.configuration.subscription_key
    end

    def get(endpoint, parameters = {})
      response = self.class.get(
        "/#{TopsConnect.configuration.zone}/api#{endpoint}",
        query: parameters.merge('subscription-key' => @subscription_key)
      )

      case response.code
      when 200
        response.parsed_response
      when 400
        raise BadRequest, response.parsed_response['Message']
      else
        raise "#{response.code}: #{response.parsed_response['Message']}"
      end
    end

    class BadRequest < Exception
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tops_connect-0.1.0 lib/tops_connect/client.rb