Class: Seahorse::Client::Base
- Inherits:
-
Object
- Object
- Seahorse::Client::Base
- Includes:
- HandlerBuilder
- Defined in:
- lib/seahorse/client/base.rb
Direct Known Subclasses
Instance Attribute Summary collapse
- #config ⇒ Configuration<Struct> readonly
- #handlers ⇒ HandlerList readonly
Class Method Summary collapse
-
.add_plugin(plugin) ⇒ void
Registers a plugin with this client.
- .api ⇒ Model::Api
- .clear_plugins ⇒ void
- .define(options = {}) ⇒ Class<Client::Base> (also: extend)
- .new(options = {}) ⇒ Object
-
.plugins ⇒ Array<Plugin>
Returns the list of registered plugins for this Client.
- .remove_plugin(plugin) ⇒ void
- .set_api(api) ⇒ Model::Api
- .set_plugins(plugins) ⇒ void
Instance Method Summary collapse
-
#build_request(operation_name, params = {}) ⇒ Request
Builds and returns a Request for the named operation.
-
#initialize(plugins, options) ⇒ Base
constructor
private
A new instance of Base.
- #inspect ⇒ Object private
- #operation(name) ⇒ Model::Operation
-
#operation_names ⇒ Array<Symbol>
Returns a list of valid request operation names.
Methods included from HandlerBuilder
#handle, #handle_request, #handle_response, #handler_for, #new_handler
Constructor Details
#initialize(plugins, options) ⇒ Base
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Base.
20 21 22 23 24 |
# File 'lib/seahorse/client/base.rb', line 20 def initialize(plugins, ) @config = build_config(plugins, ) @handlers = build_handler_list(plugins) after_initialize(plugins) end |
Instance Attribute Details
#config ⇒ Configuration<Struct> (readonly)
27 28 29 |
# File 'lib/seahorse/client/base.rb', line 27 def config @config end |
#handlers ⇒ HandlerList (readonly)
30 31 32 |
# File 'lib/seahorse/client/base.rb', line 30 def handlers @handlers end |
Class Method Details
.add_plugin(plugin) ⇒ void
This method returns an undefined value.
Registers a plugin with this client.
132 133 134 |
# File 'lib/seahorse/client/base.rb', line 132 def add_plugin(plugin) @plugins.add(plugin) end |
.api ⇒ Model::Api
176 177 178 |
# File 'lib/seahorse/client/base.rb', line 176 def api @api ||= Model::Api.new end |
.clear_plugins ⇒ void
This method returns an undefined value.
150 151 152 |
# File 'lib/seahorse/client/base.rb', line 150 def clear_plugins @plugins.set([]) end |
.define(options = {}) ⇒ Class<Client::Base> Also known as: extend
199 200 201 202 203 204 205 206 |
# File 'lib/seahorse/client/base.rb', line 199 def define( = {}) subclass = Class.new(self) subclass.set_api([:api] || api) Array([:plugins]).each do |plugin| subclass.add_plugin(plugin) end subclass end |
.new(options = {}) ⇒ Object
102 103 104 105 106 107 108 109 |
# File 'lib/seahorse/client/base.rb', line 102 def new( = {}) plugins = build_plugins = .dup before_initialize(plugins, ) client = allocate client.send(:initialize, plugins, ) client end |
.plugins ⇒ Array<Plugin>
Returns the list of registered plugins for this Client. Plugins are inherited from the client super class when the client is defined.
171 172 173 |
# File 'lib/seahorse/client/base.rb', line 171 def plugins Array(@plugins).freeze end |
.remove_plugin(plugin) ⇒ void
This method returns an undefined value.
141 142 143 |
# File 'lib/seahorse/client/base.rb', line 141 def remove_plugin(plugin) @plugins.remove(plugin) end |
.set_api(api) ⇒ Model::Api
182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/seahorse/client/base.rb', line 182 def set_api(api) @api = case api when nil then Model::Api.new({}) when Model::Api then api when Hash then Model::Api.new(api) when String, Pathname then Model::Api.new(Util.load_json(api)) else raise ArgumentError, "invalid api definition #{api}" end define_operation_methods @api end |
.set_plugins(plugins) ⇒ void
This method returns an undefined value.
160 161 162 |
# File 'lib/seahorse/client/base.rb', line 160 def set_plugins(plugins) @plugins.set(plugins) end |
Instance Method Details
#build_request(operation_name, params = {}) ⇒ Request
Builds and returns a Request for the named operation. The request will not have been sent.
36 37 38 39 40 |
# File 'lib/seahorse/client/base.rb', line 36 def build_request(operation_name, params = {}) Request.new( @handlers.for(operation_name), context_for(operation_name, params)) end |
#inspect ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
49 50 51 |
# File 'lib/seahorse/client/base.rb', line 49 def inspect "#<#{self.class.name}>" end |
#operation(name) ⇒ Model::Operation
44 45 46 |
# File 'lib/seahorse/client/base.rb', line 44 def operation(name) config.api.operation(name) end |
#operation_names ⇒ Array<Symbol>
Returns a list of valid request operation names. These are valid arguments to #build_request and are also valid methods.
56 57 58 |
# File 'lib/seahorse/client/base.rb', line 56 def operation_names self.class.api.operation_names end |