Sha256: f789efcc6442b9821c6470834873cb399934e37c6ebccb65aac07b8f096df424

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

require 'logger'
require 'hubspot/connection'

module Hubspot
  class Config
    CONFIG_KEYS = [
      :hapikey, :base_url, :portal_id, :logger, :access_token, :client_id,
      :client_secret, :redirect_uri, :read_timeout, :open_timeout, :custom_event_prefix
    ]
    DEFAULT_LOGGER = Logger.new(nil)
    DEFAULT_BASE_URL = "https://api.hubapi.com".freeze

    class << self
      attr_accessor *CONFIG_KEYS

      def configure(config)
        config.stringify_keys!
        @hapikey = config['hapikey']
        @base_url = config['base_url'] || DEFAULT_BASE_URL
        @portal_id = config['portal_id']
        @logger = config['logger'] || DEFAULT_LOGGER
        @access_token = config['access_token']
        @client_id = config['client_id'] if config['client_id'].present?
        @client_secret = config['client_secret'] if config['client_secret'].present?
        @redirect_uri = config['redirect_uri'] if config['redirect_uri'].present?
        @read_timeout = config['read_timeout'] || config['timeout']
        @open_timeout = config['open_timeout'] || config['timeout']
        @custom_event_prefix = config['custom_event_prefix']

        unless authentication_uncertain?
          raise Hubspot::ConfigurationError.new("You must provide either an access_token or an hapikey")
        end

        if access_token.present?
          Hubspot::Connection.headers("Authorization" => "Bearer #{access_token}")
        end
        self
      end

      def reset!
        @hapikey = nil
        @base_url = DEFAULT_BASE_URL
        @portal_id = nil
        @logger = DEFAULT_LOGGER
        @access_token = nil
        Hubspot::Connection.headers({})
      end

      def ensure!(*params)
        params.each do |p|
          raise Hubspot::ConfigurationError.new("'#{p}' not configured") unless instance_variable_get "@#{p}"
        end
      end

      private

      def authentication_uncertain?
        access_token.present? ^ hapikey.present?
      end
    end

    reset!
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hubspot-api-ruby-0.9.0 lib/hubspot/config.rb