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
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
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
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
195 196 197 |
# File 'lib/eco/api/session/config/api.rb', line 195 def version_available?(version) api_params?(version) end |