class Eco::API::Session::Config::Apis

Public Instance Methods

active_api() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 43
def active_api
  self["active-api"]
end
active_name() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 54
def active_name
  self["active-name"]
end
active_name=(name) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 47
def active_name=(name)
  raise "'#{name}' Api environment not defined" if !apis[name]
  self["active-name"] = name
  self["active-api"]  = apis[name]
  self
end
active_root_name() click to toggle source

the active environment

# File lib/eco/api/session/config/apis.rb, line 59
def active_root_name
  active_name
end
add(name, key:, host:, version: :internal, mode: :local, user_key: nil, external_key: nil) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 29
def add(name, key:, host:, version: :internal, mode: :local, user_key: nil, external_key: nil)
  apis[name] = Session::Config::Api.new(
    name,
    key:      key,
    host:     host,
    version:  version,
    mode:     mode,
    root:     self,
    user_key: user_key,
    external_key: external_key
  )
  self
end
any_defined?(*names) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 23
def any_defined?(*names)
  [names].flatten.any? do |name|
    self.defined?(name)
  end
end
api(logger = ::Logger.new(IO::NULL), version: nil) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 70
def api(logger = ::Logger.new(IO::NULL), version: nil)
  unless active_api
    raise "There's no 'active_api'. Use apis.active_name='api_enviro_name' to set the active api"
  end
  active_api.api(version: version, logger: logger)
end
apis() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 7
def apis
  self["apis"] ||= {}
end
apis?() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 11
def apis?
  apis.keys.length > 0
end
default_user_key() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 81
def default_user_key
  self["user_key"]
end
default_user_key=(key) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 77
def default_user_key=(key)
  self["user_key"] = key
end
defined?(name) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 19
def defined?(name)
  apis.key?(name)
end
enviros() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 15
def enviros
  apis.keys
end
one_off() click to toggle source

Method to support CLI one-off API requests

# File lib/eco/api/session/config/apis.rb, line 86
def one_off
  if one_off?
    add(one_off_org, key: one_off_key, host: "#{one_off_enviro}.ecoportal.com")
    return one_off_org
  end
end
service_up?() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 63
def service_up?
  @api_test ||= Session::Config::Api.api_class(active_api.version).new("foobar", host: active_api.host, logger: ::Logger.new(IO::NULL))
  status = @api_test.client.get("/policy_groups").status
  # 401 Unauthorized "Permission denied. API key may be invalid."
  status == 401
end

Private Instance Methods

env_file_set_var(file, var, value) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 141
def env_file_set_var(file, var, value)
  begin
    pattern = /"#{var}=(?<value>[^ \r\n]+)"/
    File.open(file, "w+") do |fd|
      found = false
      fd.each_line do |line|
        if match = line.match(pattern)
          found = true
          #  IO::SEEK_CUR => Seeks to _amount_ plus current position
          fd.seek(-(line.length + 1), IO::SEEK_CUR)
          fd.write line.gsub(match[:value], value)
        end
      end

      fd << "#{var}=#{value}" unless found
    end
  rescue StandardError => e
    puts "#{e}"
    return false
  end
  return true
end
one_off?() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 95
def one_off?
  @is_one_off ||= SCR.get_arg("-api-key") || SCR.get_arg("-one-off")
end
one_off_enviro() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 135
def one_off_enviro
  return @one_off_enviro if instance_variable_defined?(:@one_off_enviro)
  enviro = SCR.get_arg("-enviro") ? SCR.get_arg("-enviro", with_param: true) : "live"
  @one_off_enviro ||= enviro.downcase
end
one_off_key() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 99
def one_off_key
  return @one_off_key if instance_variable_defined?(:@one_off_key)
  if one_off?
    Dotenv.load("./.env_one_off")
    SCR.get_arg("-api-key", with_param: true).yield_self do |key|
       one_off_key_env(key)
    end
  end
end
one_off_key_env(key) click to toggle source
# File lib/eco/api/session/config/apis.rb, line 109
def one_off_key_env(key)
  if one_off?
    if key
      env_file_set_var("./.env_one_off", one_off_key_env_var, key)
      key
    else
      Dotenv.load("./.env_one_off")
      ENV[one_off_key_env_var].tap do |k|
        raise "At least the first time, you should provide the -api-key" unless k
      end
    end
  end
end
one_off_key_env_var() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 123
def one_off_key_env_var
  @one_off_key_env_var ||= "#{one_off_org}_KEY"
end
one_off_org() click to toggle source
# File lib/eco/api/session/config/apis.rb, line 127
def one_off_org
  return @one_off_org if instance_variable_defined?(:@one_off_org)
  unless org = SCR.get_arg("-org", with_param: true)
    raise("You should specify -org NAME when using -api-key or -one-off")
  end
  @one_off_org  ||= "#{org.downcase.split(/[^a-z]+/).join("_")}_#{one_off_enviro.gsub(".", "_")}".to_sym
end