class Misty::Config

Constants

CONTENT_TYPE

Default REST content type. Use :json or :hash

CONTENT_TYPES

Valid content format

INTERFACE

Default Interface

INTERFACES

Valid endpoint interfaces

LOG_FILE

Default Log file

LOG_LEVEL

Default Log level

REGION

Default Region

SSL_VERIFY_MODE

Default when uri.scheme is https

Attributes

log[R]
services[R]
token[R]

Public Class Methods

new(arg) click to toggle source
# File lib/misty/config.rb, line 32
def initialize(arg)
  raise CredentialsError if arg.nil? || arg.empty? || arg[:auth].nil? || arg[:auth].empty?
  @log = set_log(arg[:log_file], arg[:log_level])
  @globals = set_config(arg)
  @services = set_services(arg)
  arg[:log] = @log
  @token = Misty::Auth::Token.build(arg[:auth])
end

Public Instance Methods

get_service(method) click to toggle source
# File lib/misty/config.rb, line 41
def get_service(method)
  set = {}
  set[:token] = @token
  set[:log] = @log
  service_config = @services.key?(method) ? @services[method] : {}
  if service_config
    set[:config] = set_config(service_config, @globals)
    set[:config].merge!(set_service(service_config))
  else
    set[:config] = @globals
  end
  set
end
set_service(arg) click to toggle source
# File lib/misty/config.rb, line 55
def set_service(arg)
  set = {}
  set[:api_version] = arg[:api_version] ? arg[:api_version] : nil
  set[:base_path] = arg[:base_path] ? arg[:base_path].chomp('/') : nil
  set[:endpoint] = arg[:endpoint] ? arg[:endpoint] : nil
  set[:service_name] = arg[:service_name] ? arg[:service_name] : nil
  set[:version] = arg[:version] ? arg[:version] : nil
  set
end

Private Instance Methods

get_defaults() click to toggle source
# File lib/misty/config.rb, line 83
def get_defaults
  set = {}
  set[:content_type] = CONTENT_TYPE
  set[:headers] = HTTP::Header.new('Accept' => 'application/json; q=1.0')
  set[:interface] = INTERFACE
  set[:region] = REGION
  set[:ssl_verify_mode] = SSL_VERIFY_MODE
  set
end
set_config(arg = {}, defaults = get_defaults) click to toggle source
# File lib/misty/config.rb, line 67
def set_config(arg = {}, defaults = get_defaults)
  set = {}
  set[:content_type] = set_content_type(arg[:content_type], defaults[:content_type])
  set[:headers] = set_headers(arg[:headers], defaults[:headers])
  set[:interface] = set_interface(arg[:interface], defaults[:interface])
  set[:region] = set_region(arg[:region], defaults[:region])
  set[:ssl_verify_mode] = set_ssl_verify_mode(arg[:ssl_verify_mode], defaults[:ssl_verify_mode])
  set
end
set_content_type(val, default) click to toggle source
# File lib/misty/config.rb, line 77
def set_content_type(val, default)
  res = val.nil? ? default : val
  raise InvalidDataError, "Config ':content_type' must be one of #{CONTENT_TYPES}" unless CONTENT_TYPES.include?(res)
  res
end
set_headers(val, default) click to toggle source
# File lib/misty/config.rb, line 93
def set_headers(val, default)
  res = HTTP::Header.new
  res.add(default.get)
  res.add(val) if !val.nil? && !val.empty?
  res
end
set_interface(val, default) click to toggle source
# File lib/misty/config.rb, line 100
def set_interface(val, default)
  res = val.nil? ? default : val
  raise InvalidDataError, "Config ':interface' must be one of #{INTERFACES}" unless INTERFACES.include?(res)
  res
end
set_log(file, level) click to toggle source
# File lib/misty/config.rb, line 106
def set_log(file, level)
  log = Logger.new(file ? file : LOG_FILE)
  log.level = level ? level : LOG_LEVEL
  log
end
set_region(val, default) click to toggle source
# File lib/misty/config.rb, line 112
def set_region(val, default)
    res = val.nil? ? default : val
  raise InvalidDataError, "Config ':region' must be a String" unless res.kind_of? String
  res
end
set_services(arg) click to toggle source
# File lib/misty/config.rb, line 118
def set_services(arg)
  set = {}
  arg.each do |e, k|
    set[e] = k if Misty.services.find {|s| s.type == e}
  end
  set
end
set_ssl_verify_mode(val, default) click to toggle source
# File lib/misty/config.rb, line 126
def set_ssl_verify_mode(val, default)
    res = val.nil? ? default : val
  raise InvalidDataError, "Config ':ssl_verify_mode' must be a Boolean" unless res == !!res
  res
end