Sha256: 4abd1068bf04bb423e6a45b2b21677b2b8de33b2e4d5f5640e3b78dd5578992d

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

require 'universal-git-client/http/response_validation'
require 'httparty'
require 'down'
require 'deep_merge'

module UniversalGitClient
  module Http
    class Base
      include HTTParty
      include ResponseValidation

      def initialize(base_url:, download_url: nil, access_token: nil, private_token: nil)
        if access_token && private_token
          raise ArgumentError, 'access_token and private_token params are mutually exclusive'
        end

        @base_url = base_url.chomp('/')
        @download_url = download_url
        @access_token = access_token
        @private_token = private_token
      end

      private

      attr_reader :base_url, :download_url, :access_token, :private_token

      def user_agent
        UniversalGitClient.config.user_agent
      end

      def default_elements_per_page
        UniversalGitClient.config.default_pagination
      end

      def logger
        UniversalGitClient.config.logger
      end

      def log_level
        UniversalGitClient.config.log_level
      end

      def log_format
        UniversalGitClient.config.log_format
      end

      def default_options
        {
          logger: logger,
          log_level: log_level,
          log_format: log_format,
          base_uri: base_url,
          headers: {
            'Accept' => 'application/json',
            'Content-Type' => 'application/json',
            'Authorization' => (access_token ? "Bearer #{access_token}" : nil),
            'Private-Token' => private_token,
            'User-Agent' => user_agent,
          }.compact,
        }
      end

      def down_default_options
        options = default_options[:headers].reject { |k, _v| %w[Accept Content-Type].include?(k) }
        options.reject { |k, _v| [:base_uri, :logger, :log_level, :log_format].include?(k) }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
universal-git-client-1.2.4 lib/universal-git-client/http/base.rb