class HammerCLIForeman::Api::Connection

Attributes

authenticator[R]

Public Class Methods

new(settings, logger = nil, locale = nil) click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/api/connection.rb, line 10
def initialize(settings, logger = nil, locale = nil)
  default_params = build_default_params(settings, logger, locale)
  super(default_params,
    :logger => logger,
    :reload_cache => settings.get(:_params, :reload_cache) || settings.get(:reload_cache)
  )
end

Public Instance Methods

login() click to toggle source
# File lib/hammer_cli_foreman/api/connection.rb, line 18
def login
  # Call some api entry point to trigger the
  @api.resource(:home).action(:status).call
end
login_status() click to toggle source
# File lib/hammer_cli_foreman/api/connection.rb, line 27
def login_status
  @authenticator.status
end
logout() click to toggle source
# File lib/hammer_cli_foreman/api/connection.rb, line 23
def logout
  @authenticator.clear if @authenticator.respond_to?(:clear)
end

Protected Instance Methods

build_default_params(settings, logger, locale) click to toggle source
# File lib/hammer_cli_foreman/api/connection.rb, line 57
def build_default_params(settings, logger, locale)
  config = {}
  config[:uri] = settings.get(:_params, :host) || settings.get(:foreman, :host)
  config[:logger] = logger unless logger.nil?
  config[:api_version] = 2
  config[:follow_redirects] = settings.get(:foreman, :follow_redirects) || :never
  config[:aggressive_cache_checking] = settings.get(:foreman, :refresh_cache) || false
  unless locale.nil?
    config[:headers] = { "Accept-Language" => locale }
    config[:language] = locale
  end
  config[:timeout] = settings.get(:foreman, :request_timeout)
  config[:timeout] = -1 if (config[:timeout] && config[:timeout].to_i < 0)
  config[:apidoc_authenticated] = false
  config[:authenticator] = create_authenticator(config[:uri], settings)
  config
end
create_authenticator(uri, settings) click to toggle source
# File lib/hammer_cli_foreman/api/connection.rb, line 33
def create_authenticator(uri, settings)
  return @authenticator if @authenticator

  if ssl_cert_authentication?(settings) && !use_basic_auth?(settings)
    @authenticator = VoidAuth.new
  else
    @authenticator = InteractiveBasicAuth.new(
      settings.get(:_params, :username) || ENV['FOREMAN_USERNAME'] || settings.get(:foreman, :username),
      settings.get(:_params, :password) || ENV['FOREMAN_PASSWORD'] || settings.get(:foreman, :password)
    )
    @authenticator = SessionAuthenticatorWrapper.new(@authenticator, uri) if settings.get(:foreman, :use_sessions)
    @authenticator
  end
end
ssl_cert_authentication?(settings) click to toggle source
# File lib/hammer_cli_foreman/api/connection.rb, line 48
def ssl_cert_authentication?(settings)
  (settings.get(:_params, :ssl_client_cert) || settings.get(:ssl, :ssl_client_cert)) &&
  (settings.get(:_params, :ssl_client_key) || settings.get(:ssl, :ssl_client_key))
end
use_basic_auth?(settings) click to toggle source
# File lib/hammer_cli_foreman/api/connection.rb, line 53
def use_basic_auth?(settings)
  settings.get(:_params, :ssl_with_basic_auth) || settings.get(:ssl, :ssl_with_basic_auth)
end