Sha256: e5502246d39a7e0ec7b611dd3f31a65d907afc81ad4fb61659488a2d54898dcd

Contents?: true

Size: 1.51 KB

Versions: 4

Compression:

Stored size: 1.51 KB

Contents

require 'openssl'

module AnsibleTowerClient
  class Connection
    attr_reader :connection

    def initialize(options = nil)
      raise ":username and :password are required" if options.nil? || !options[:username] || !options[:password]
      raise ":base_url is required" unless options[:base_url]

      logger     = options[:logger] || AnsibleTowerClient.logger
      verify_ssl = options[:verify_ssl] || OpenSSL::SSL::VERIFY_PEER
      verify_ssl = verify_ssl == OpenSSL::SSL::VERIFY_NONE ? false : true

      require 'faraday'
      require 'faraday_middleware'
      require 'ansible_tower_client/middleware/raise_tower_error'
      Faraday::Response.register_middleware :raise_tower_error => -> { Middleware::RaiseTowerError }

      connection_opts = { :ssl => {:verify => verify_ssl} }
      connection_opts[:proxy] = options[:proxy] if options[:proxy].present?
      connection_opts[:headers] = options[:headers] if options[:headers].present?
      connection_opts[:request] = options[:request] if options[:request].present?

      @connection = Faraday.new(options[:base_url], connection_opts) do |f|
        f.use(FaradayMiddleware::EncodeJson)
        f.use(FaradayMiddleware::FollowRedirects, :limit => 3, :standards_compliant => true)
        f.request(:url_encoded)
        f.response(:raise_tower_error)
        f.response(:logger, logger)
        f.adapter(Faraday.default_adapter)
        f.basic_auth(options[:username], options[:password])
      end
    end

    def api
      @api ||= Api.new(connection)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ansible_tower_client-0.21.3 lib/ansible_tower_client/connection.rb
ansible_tower_client-0.21.2 lib/ansible_tower_client/connection.rb
ansible_tower_client-0.21.1 lib/ansible_tower_client/connection.rb
ansible_tower_client-0.21.0 lib/ansible_tower_client/connection.rb