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.
18 19 20 21 22 |
# File 'lib/seahorse/client/base.rb', line 18 def initialize(plugins, ) @config = build_config(plugins, ) @handlers = build_handler_list(plugins) after_initialize(plugins) end |
Instance Attribute Details
#config ⇒ Configuration<Struct> (readonly)
25 26 27 |
# File 'lib/seahorse/client/base.rb', line 25 def config @config end |
#handlers ⇒ HandlerList (readonly)
28 29 30 |
# File 'lib/seahorse/client/base.rb', line 28 def handlers @handlers end |
Class Method Details
.add_plugin(plugin) ⇒ void
This method returns an undefined value.
Registers a plugin with this client.
130 131 132 |
# File 'lib/seahorse/client/base.rb', line 130 def add_plugin(plugin) @plugins.add(plugin) end |
.api ⇒ Model::Api
174 175 176 |
# File 'lib/seahorse/client/base.rb', line 174 def api @api ||= Model::Api.new end |
.clear_plugins ⇒ void
This method returns an undefined value.
148 149 150 |
# File 'lib/seahorse/client/base.rb', line 148 def clear_plugins @plugins.set([]) end |
.define(options = {}) ⇒ Class<Client::Base> Also known as: extend
190 191 192 193 194 195 196 197 |
# File 'lib/seahorse/client/base.rb', line 190 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
100 101 102 103 104 105 106 107 |
# File 'lib/seahorse/client/base.rb', line 100 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.
169 170 171 |
# File 'lib/seahorse/client/base.rb', line 169 def plugins Array(@plugins).freeze end |
.remove_plugin(plugin) ⇒ void
This method returns an undefined value.
139 140 141 |
# File 'lib/seahorse/client/base.rb', line 139 def remove_plugin(plugin) @plugins.remove(plugin) end |
.set_api(api) ⇒ Model::Api
180 181 182 183 184 |
# File 'lib/seahorse/client/base.rb', line 180 def set_api(api) @api = api define_operation_methods @api end |
.set_plugins(plugins) ⇒ void
This method returns an undefined value.
158 159 160 |
# File 'lib/seahorse/client/base.rb', line 158 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.
34 35 36 37 38 |
# File 'lib/seahorse/client/base.rb', line 34 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.
47 48 49 |
# File 'lib/seahorse/client/base.rb', line 47 def inspect "#<#{self.class.name}>" end |
#operation(name) ⇒ Model::Operation
42 43 44 |
# File 'lib/seahorse/client/base.rb', line 42 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.
54 55 56 |
# File 'lib/seahorse/client/base.rb', line 54 def operation_names self.class.api.operation_names end |