Sha256: 00613929857d5872ab79e3b5b2432e0be9e55bb12b542d402174aaf832447ba2

Contents?: true

Size: 1.31 KB

Versions: 3

Compression:

Stored size: 1.31 KB

Contents

module AnsibleTowerClient
  class Connection
    attr_reader :connection

    def initialize(options = nil)
      raise "Credentials are required" unless options[:username] && options[:password]
      raise ":base_url is required" unless options[:base_url]
      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 = Faraday.new(options[:base_url], :ssl => {:verify => verify_ssl}) 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.adapter(Faraday.default_adapter)
        f.basic_auth(options[:username], options[:password])
      end
    end

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

    def config
      JSON.parse(api.get("config").body)
    end

    def version
      config["version"]
    end

    def verify_credentials
      JSON.parse(api.get("me").body).fetch_path("results", 0, "username")
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ansible_tower_client-0.3.3 lib/ansible_tower_client/connection.rb
ansible_tower_client-0.3.2 lib/ansible_tower_client/connection.rb
ansible_tower_client-0.3.1 lib/ansible_tower_client/connection.rb