class Eco::API::Session::Config::Api
Public Class Methods
api_class(version = :v0)
click to toggle source
# File lib/eco/api/session/config/api.rb, line 20 def api_class(version = :v0) case to_version(version) when :v0 Ecoportal::API::Internal when :v1 Ecoportal::API::V1 when :v2 Ecoportal::API::V2 else end end
new(name, key:, host:, version:, mode: :local, root:, user_key: nil, external_key: nil)
click to toggle source
Calls superclass method
# File lib/eco/api/session/config/api.rb, line 34 def initialize(name, key:, host:, version:, mode: :local, root:, user_key: nil, external_key: nil) super(nil) @root = root @apis = {} self["name"] = name self["key"] = key self["host"] = host self["version"] = version self["mode"] = mode self["user_key"] = user_key self["external_key"] = external_key end
to_version(str)
click to toggle source
# File lib/eco/api/session/config/api.rb, line 9 def to_version(str) case str.to_sym when :external, :v1 :v1 when :v2, :oozes :v2 else # :internal, :v0 :v0 end end
Public Instance Methods
api(version: nil, logger: nil)
click to toggle source
Obtain an `API` object of a specific `version`. @param version [Symbol] any of the available `API` versions [`:v0`, `:v1`, `:v2`]. @param logger [Logger] the logger that will be used with this api instance. @return [Ecoportal::API::Internal, Ecoportal::API::V2, Ecoportal::API::V1]
# File lib/eco/api/session/config/api.rb, line 56 def api(version: nil, logger: nil) version = version ? version : self.version switch_logger = (logger != @logger) @logger = logger if logger if (current = get(version)) && !switch_logger return current end unless api_params?(version) raise "The api configuration for '#{name}' is missing data for the api version '#{self.version(version)}'" end new_api(version).tap do |pi| set(version, pi) end end
config()
click to toggle source
@return [Eco::API::Session::Config] the `root` config
# File lib/eco/api/session/config/api.rb, line 48 def config @root.config end
external_key()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 98 def external_key self["external_key"] || ([:v1, :v2].include?(version) && key) end
get(version)
click to toggle source
# File lib/eco/api/session/config/api.rb, line 78 def get(version) @apis[self.version(version)] end
host()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 106 def host self["host"] end
internal_key()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 102 def internal_key (version == :v0) && self["key"] end
key()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 90 def key self["key"] end
local?()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 120 def local? mode == :local end
logger()
click to toggle source
if no low level connection messages: use `IO::NULL`
# File lib/eco/api/session/config/api.rb, line 133 def logger @logger ||= ::Logger.new(IO::NULL) log_connection? ? @logger : ::Logger.new(IO::NULL) end
mode()
click to toggle source
@return [Symbol] if running on `:remote` or `:local`
# File lib/eco/api/session/config/api.rb, line 116 def mode self["mode"] end
mode=(mode)
click to toggle source
@param mode [Symbol] to define if running on `:remote` or `:local`
# File lib/eco/api/session/config/api.rb, line 111 def mode=(mode) self["mode"] = (mode == :remote)? :remote : :local end
name()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 82 def name self["name"] end
one_off?()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 86 def one_off? name.is_a?(Symbol) end
remote?()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 124 def remote? !local? end
set(version, api)
click to toggle source
# File lib/eco/api/session/config/api.rb, line 74 def set(version, api) @apis[self.version(version)] = api end
user_key()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 94 def user_key self["user_key"] || @root.default_user_key end
version(value = nil)
click to toggle source
# File lib/eco/api/session/config/api.rb, line 128 def version(value = nil) self.class.to_version(value || self["version"]) end
Private Instance Methods
api_params?(version)
click to toggle source
Checks if the necessary parameters for a specific `API` version are available.
# File lib/eco/api/session/config/api.rb, line 159 def api_params?(version) case self.class.to_version(version) when :v0 internal_key && host when :v1 external_key && host when :v2 external_key && user_key end end
log_connection?()
click to toggle source
# File lib/eco/api/session/config/api.rb, line 170 def log_connection? config.logger.log_connection? end
new_api(version)
click to toggle source
Generates a new `API` object of version `version`.
# File lib/eco/api/session/config/api.rb, line 141 def new_api(version) klass = self.class.api_class(version) case self.version(version) when :v0 klass.new(internal_key, host: host, logger: logger) when :v1 klass.new(external_key, host: host, logger: logger) when :v2 klass.new(user_key: user_key, org_key: external_key, host: host, logger: logger) end.tap do |api| unless !api || log_connection? @logger.info("Created api#{self.version(version)} connection on '#{name}' enviro, pointing to '#{host}' in '#{mode}' mode") api.logger.level = ::Logger::UNKNOWN end end end