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
API
object of a specificversion
. -
#config ⇒ Eco::API::Session::Config
The
root
config. - #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
. -
#mode ⇒ Symbol
If running on
:remote
or: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
version
is 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 |
# File 'lib/eco/api/session/config/api.rb', line 98 def api(version: nil, logger: nil) version = version ? version : self.version switch_logger = (logger != @logger) @logger = logger if logger current = get(version) return current if current && !switch_logger unless api_params?(version) msg = "The api configuration for #{description} " msg << "is missing data for the api version '#{self.version(version)}'" 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
134 135 136 |
# File 'lib/eco/api/session/config/api.rb', line 134 def description self.class.description(self) end |
#email ⇒ Object
162 163 164 |
# File 'lib/eco/api/session/config/api.rb', line 162 def email self['email'] || @root.default_email end |
#external_key ⇒ Object
150 151 152 |
# File 'lib/eco/api/session/config/api.rb', line 150 def external_key self['external_key'] || (%i[v1 v2].include?(version) && key) end |
#get(version) ⇒ Object
121 122 123 |
# File 'lib/eco/api/session/config/api.rb', line 121 def get(version) @apis[self.version(version)] end |
#host ⇒ Object
170 171 172 |
# File 'lib/eco/api/session/config/api.rb', line 170 def host self['host'] end |
#internal_key ⇒ Object
154 155 156 |
# File 'lib/eco/api/session/config/api.rb', line 154 def internal_key (version == :v0) && self['key'] end |
#key ⇒ Object
142 143 144 |
# File 'lib/eco/api/session/config/api.rb', line 142 def key self['key'] end |
#local? ⇒ Boolean
184 185 186 |
# File 'lib/eco/api/session/config/api.rb', line 184 def local? mode == :local end |
#logger ⇒ Object
if no low level connection messages: use IO::NULL
202 203 204 205 |
# File 'lib/eco/api/session/config/api.rb', line 202 def logger @logger ||= ::Logger.new(IO::NULL) log_connection? ? @logger : ::Logger.new(IO::NULL) end |
#mode ⇒ Symbol
Returns if running on :remote
or :local
.
180 181 182 |
# File 'lib/eco/api/session/config/api.rb', line 180 def mode self['mode'] end |
#mode=(mode) ⇒ Object
175 176 177 |
# File 'lib/eco/api/session/config/api.rb', line 175 def mode=(mode) self['mode'] = mode == :remote ? :remote : :local end |
#name ⇒ Object
125 126 127 |
# File 'lib/eco/api/session/config/api.rb', line 125 def name self['name'] end |
#one_off? ⇒ Boolean
138 139 140 |
# File 'lib/eco/api/session/config/api.rb', line 138 def one_off? name.is_a?(Symbol) end |
#org_id ⇒ Object
158 159 160 |
# File 'lib/eco/api/session/config/api.rb', line 158 def org_id self['org_id'] end |
#pass ⇒ Object
166 167 168 |
# File 'lib/eco/api/session/config/api.rb', line 166 def pass self['pass'] || @root.default_pass end |
#remote? ⇒ Boolean
188 189 190 |
# File 'lib/eco/api/session/config/api.rb', line 188 def remote? !local? end |
#set(version, api) ⇒ Object
117 118 119 |
# File 'lib/eco/api/session/config/api.rb', line 117 def set(version, api) @apis[self.version(version)] = api end |
#space ⇒ Object
129 130 131 132 |
# File 'lib/eco/api/session/config/api.rb', line 129 def space self['space'] ||= :default to_space(self['space']) end |
#user_key ⇒ Object
146 147 148 |
# File 'lib/eco/api/session/config/api.rb', line 146 def user_key self['user_key'] || @root.default_user_key end |
#version(value = nil) ⇒ Object
197 198 199 |
# File 'lib/eco/api/session/config/api.rb', line 197 def version(value = nil) self.class.to_version(value || self['version']) end |
#version_available?(version) ⇒ Boolean
Returns whether or not version
is available.
193 194 195 |
# File 'lib/eco/api/session/config/api.rb', line 193 def version_available?(version) api_params?(version) end |