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_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.
124 125 126 |
# File 'lib/seahorse/client/base.rb', line 124 def add_plugin(plugin) @plugins.add(plugin) end |
.api ⇒ Model::Api
168 169 170 |
# File 'lib/seahorse/client/base.rb', line 168 def api @api ||= Model::Api.new end |
.clear_plugins ⇒ void
This method returns an undefined value.
142 143 144 |
# File 'lib/seahorse/client/base.rb', line 142 def clear_plugins @plugins.set([]) end |
.define(options = {}) ⇒ Class<Client::Base> Also known as: extend
184 185 186 187 188 189 190 191 |
# File 'lib/seahorse/client/base.rb', line 184 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
94 95 96 97 98 99 100 101 |
# File 'lib/seahorse/client/base.rb', line 94 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.
163 164 165 |
# File 'lib/seahorse/client/base.rb', line 163 def plugins Array(@plugins).freeze end |
.remove_plugin(plugin) ⇒ void
This method returns an undefined value.
133 134 135 |
# File 'lib/seahorse/client/base.rb', line 133 def remove_plugin(plugin) @plugins.remove(plugin) end |
.set_api(api) ⇒ Model::Api
174 175 176 177 178 |
# File 'lib/seahorse/client/base.rb', line 174 def set_api(api) @api = api define_operation_methods @api end |
.set_plugins(plugins) ⇒ void
This method returns an undefined value.
152 153 154 |
# File 'lib/seahorse/client/base.rb', line 152 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.
41 42 43 |
# File 'lib/seahorse/client/base.rb', line 41 def inspect "#<#{self.class.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.
48 49 50 |
# File 'lib/seahorse/client/base.rb', line 48 def operation_names self.class.api.operation_names end |