Class: Eco::API::Session::Config::Api
- Defined in:
- lib/eco/api/session/config/api.rb
Class Method Summary collapse
- .api_class(version = :v0) ⇒ Object
- .description(api) ⇒ Object
- .full_name(name, space: :default) ⇒ Object
- .to_space(value) ⇒ Object
- .to_version(str) ⇒ Object
Instance Method Summary collapse
-
#api(version: nil, logger: nil) ⇒ Ecoportal::API::Internal, ...
Obtain an
APIobject of a specificversion. -
#config ⇒ Eco::API::Session::Config
The
rootconfig. - #description ⇒ Object
- #email ⇒ Object
- #external_key ⇒ Object
- #get(version) ⇒ Object
- #host ⇒ Object
-
#initialize(name, root:, key:, host:, version:, space: :default, mode: :local, user_key: nil, external_key: nil, email: nil, pass: nil, org_id: nil) ⇒ Api
constructor
A new instance of Api.
- #internal_key ⇒ Object
- #key ⇒ Object
- #local? ⇒ Boolean
-
#logger ⇒ Object
if no low level connection messages: use
IO::NULL. -
#missing_api_params(version) ⇒ Array<Symbol>
The required parameters for
versionthat are currently missing (empty when all of them are present). -
#mode ⇒ Symbol
If running on
:remoteor:local. - #mode=(mode) ⇒ Object
- #name ⇒ Object
- #one_off? ⇒ Boolean
- #org_id ⇒ Object
- #pass ⇒ Object
- #remote? ⇒ Boolean
- #set(version, api) ⇒ Object
- #space ⇒ Object
- #user_key ⇒ Object
- #version(value = nil) ⇒ Object
-
#version_available?(version) ⇒ Boolean
Whether or not
versionis available.
Methods inherited from Hash
Constructor Details
#initialize(name, root:, key:, host:, version:, space: :default, mode: :local, user_key: nil, external_key: nil, email: nil, pass: nil, org_id: nil) ⇒ Api
Returns a new instance of Api.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/eco/api/session/config/api.rb', line 59 def initialize( name, root:, key:, host:, version:, space: :default, mode: :local, user_key: nil, external_key: nil, email: nil, pass: nil, org_id: nil ) super(nil) @root = root @apis = {} self['name'] = name self['space'] = to_space(space) self['key'] = key self['host'] = host self['version'] = version self['mode'] = mode self['user_key'] = user_key self['external_key'] = external_key self['email'] = email || ENV['USER_EMAIL'] self['pass'] = pass || ENV['USER_PASS'] self['org_id'] = org_id end |
Class Method Details
.api_class(version = :v0) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/eco/api/session/config/api.rb', line 41 def api_class(version = :v0) case to_version(version) when :v0 Ecoportal::API::Internal when :v1 Ecoportal::API::V1 when :v2 require 'ecoportal/api-v2' Ecoportal::API::V2 when :graphql require 'ecoportal/api-graphql' Ecoportal::API::GraphQL else puts "Unknown api version '#{version}'" end end |
.description(api) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/eco/api/session/config/api.rb', line 14 def description(api) msg = "Expecting #{self}. Given: #{api.class}" raise ArgumentError, msg unless api.is_a?(self) full_name(api.name, space: api.space) end |
.full_name(name, space: :default) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/eco/api/session/config/api.rb', line 21 def full_name(name, space: :default) space = to_space(space) str_space = space == :default ? '' : " (space: :#{space})" "'#{name}'#{str_space}" end |
.to_space(value) ⇒ Object
7 8 9 10 11 12 |
# File 'lib/eco/api/session/config/api.rb', line 7 def to_space(value) value = value.to_s.strip.gsub(/[- ]/, '_').downcase return :default if value.empty? value.to_sym end |
.to_version(str) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/eco/api/session/config/api.rb', line 28 def to_version(str) case str.to_sym when :external, :v1 :v1 when :v2, :oozes :v2 when :graphql :graphql else # :internal, :v0 :v0 end end |
Instance Method Details
#api(version: nil, logger: nil) ⇒ Ecoportal::API::Internal, ...
Obtain an API object of a specific version.
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/eco/api/session/config/api.rb', line 98 def api(version: nil, logger: nil) version ||= self.version switch_logger = (logger != @logger) @logger = logger if logger current = get(version) return current if current && !switch_logger unless api_params?(version) missing = missing_api_params(version) msg = "The api configuration for #{description} " msg << "is missing data for the api version '#{self.version(version)}': " msg << "missing params #{missing.map {|param| ":#{param}"}.join(', ')}" raise ArgumentError, msg end new_api(version).tap do |pi| set(version, pi) end end |
#config ⇒ Eco::API::Session::Config
Returns the root config.
90 91 92 |
# File 'lib/eco/api/session/config/api.rb', line 90 def config @root.config end |
#description ⇒ Object
136 137 138 |
# File 'lib/eco/api/session/config/api.rb', line 136 def description self.class.description(self) end |
#email ⇒ Object
166 167 168 |
# File 'lib/eco/api/session/config/api.rb', line 166 def email self['email'] || @root.default_email end |
#external_key ⇒ Object
154 155 156 |
# File 'lib/eco/api/session/config/api.rb', line 154 def external_key self['external_key'] || (%i[v1 v2].include?(version) && key) end |
#get(version) ⇒ Object
123 124 125 |
# File 'lib/eco/api/session/config/api.rb', line 123 def get(version) @apis[self.version(version)] end |
#host ⇒ Object
174 175 176 |
# File 'lib/eco/api/session/config/api.rb', line 174 def host self['host'] end |
#internal_key ⇒ Object
158 159 160 |
# File 'lib/eco/api/session/config/api.rb', line 158 def internal_key (version == :v0) && self['key'] end |
#key ⇒ Object
146 147 148 |
# File 'lib/eco/api/session/config/api.rb', line 146 def key self['key'] end |
#local? ⇒ Boolean
188 189 190 |
# File 'lib/eco/api/session/config/api.rb', line 188 def local? mode == :local end |
#logger ⇒ Object
if no low level connection messages: use IO::NULL
212 213 214 215 |
# File 'lib/eco/api/session/config/api.rb', line 212 def logger @logger ||= ::Logger.new(IO::NULL) log_connection? ? @logger : ::Logger.new(IO::NULL) end |
#missing_api_params(version) ⇒ Array<Symbol>
Returns the required parameters for version that are
currently missing (empty when all of them are present).
203 204 205 |
# File 'lib/eco/api/session/config/api.rb', line 203 def missing_api_params(version) required_api_params(version).reject {|_param, value| value}.keys end |
#mode ⇒ Symbol
Returns if running on :remote or :local.
184 185 186 |
# File 'lib/eco/api/session/config/api.rb', line 184 def mode self['mode'] end |
#mode=(mode) ⇒ Object
179 180 181 |
# File 'lib/eco/api/session/config/api.rb', line 179 def mode=(mode) self['mode'] = mode == :remote ? :remote : :local end |
#name ⇒ Object
127 128 129 |
# File 'lib/eco/api/session/config/api.rb', line 127 def name self['name'] end |
#one_off? ⇒ Boolean
140 141 142 143 144 |
# File 'lib/eco/api/session/config/api.rb', line 140 def one_off? return false unless @root.respond_to?(:one_off) @root.one_off? end |
#org_id ⇒ Object
162 163 164 |
# File 'lib/eco/api/session/config/api.rb', line 162 def org_id self['org_id'] end |
#pass ⇒ Object
170 171 172 |
# File 'lib/eco/api/session/config/api.rb', line 170 def pass self['pass'] || @root.default_pass end |
#remote? ⇒ Boolean
192 193 194 |
# File 'lib/eco/api/session/config/api.rb', line 192 def remote? !local? end |
#set(version, api) ⇒ Object
119 120 121 |
# File 'lib/eco/api/session/config/api.rb', line 119 def set(version, api) @apis[self.version(version)] = api end |
#space ⇒ Object
131 132 133 134 |
# File 'lib/eco/api/session/config/api.rb', line 131 def space self['space'] ||= :default to_space(self['space']) end |
#user_key ⇒ Object
150 151 152 |
# File 'lib/eco/api/session/config/api.rb', line 150 def user_key self['user_key'] || @root.default_user_key end |
#version(value = nil) ⇒ Object
207 208 209 |
# File 'lib/eco/api/session/config/api.rb', line 207 def version(value = nil) self.class.to_version(value || self['version']) end |
#version_available?(version) ⇒ Boolean
Returns whether or not version is available.
197 198 199 |
# File 'lib/eco/api/session/config/api.rb', line 197 def version_available?(version) api_params?(version) end |