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. -
#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 |
# 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) 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
164 165 166 |
# File 'lib/eco/api/session/config/api.rb', line 164 def email self['email'] || @root.default_email end |
#external_key ⇒ Object
152 153 154 |
# File 'lib/eco/api/session/config/api.rb', line 152 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
172 173 174 |
# File 'lib/eco/api/session/config/api.rb', line 172 def host self['host'] end |
#internal_key ⇒ Object
156 157 158 |
# File 'lib/eco/api/session/config/api.rb', line 156 def internal_key (version == :v0) && self['key'] end |
#key ⇒ Object
144 145 146 |
# File 'lib/eco/api/session/config/api.rb', line 144 def key self['key'] end |
#local? ⇒ Boolean
186 187 188 |
# File 'lib/eco/api/session/config/api.rb', line 186 def local? mode == :local end |
#logger ⇒ Object
if no low level connection messages: use IO::NULL
204 205 206 207 |
# File 'lib/eco/api/session/config/api.rb', line 204 def logger @logger ||= ::Logger.new(IO::NULL) log_connection? ? @logger : ::Logger.new(IO::NULL) end |
#mode ⇒ Symbol
Returns if running on :remote or :local.
182 183 184 |
# File 'lib/eco/api/session/config/api.rb', line 182 def mode self['mode'] end |
#mode=(mode) ⇒ Object
177 178 179 |
# File 'lib/eco/api/session/config/api.rb', line 177 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 141 142 |
# File 'lib/eco/api/session/config/api.rb', line 138 def one_off? return false unless @root.respond_to?(:one_off) @root.one_off? end |
#org_id ⇒ Object
160 161 162 |
# File 'lib/eco/api/session/config/api.rb', line 160 def org_id self['org_id'] end |
#pass ⇒ Object
168 169 170 |
# File 'lib/eco/api/session/config/api.rb', line 168 def pass self['pass'] || @root.default_pass end |
#remote? ⇒ Boolean
190 191 192 |
# File 'lib/eco/api/session/config/api.rb', line 190 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
148 149 150 |
# File 'lib/eco/api/session/config/api.rb', line 148 def user_key self['user_key'] || @root.default_user_key end |
#version(value = nil) ⇒ Object
199 200 201 |
# File 'lib/eco/api/session/config/api.rb', line 199 def version(value = nil) self.class.to_version(value || self['version']) end |
#version_available?(version) ⇒ Boolean
Returns whether or not version is available.
195 196 197 |
# File 'lib/eco/api/session/config/api.rb', line 195 def version_available?(version) api_params?(version) end |