Class: Seahorse::Client::Base

Inherits:
Object
  • Object
show all
Includes:
HandlerBuilder
Defined in:
lib/seahorse/client/base.rb

Direct Known Subclasses

Aws::Client

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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.



19
20
21
22
23
# File 'lib/seahorse/client/base.rb', line 19

def initialize(plugins, options)
  @config = build_config(plugins, options)
  @handlers = build_handler_list(plugins)
  after_initialize(plugins)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ 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.



69
70
71
72
73
74
75
# File 'lib/seahorse/client/base.rb', line 69

def method_missing(method_name, *args, &block)
  if request_method?(method_name)
    make_request(method_name, *args, &block)
  else
    super
  end
end

Instance Attribute Details

#configConfiguration<Struct> (readonly)

Returns:



26
27
28
# File 'lib/seahorse/client/base.rb', line 26

def config
  @config
end

#handlersHandlerList (readonly)

Returns:



29
30
31
# File 'lib/seahorse/client/base.rb', line 29

def handlers
  @handlers
end

Class Method Details

.add_plugin(plugin) ⇒ void

This method returns an undefined value.

Registers a plugin with this client.

Examples:

Register a plugin


ClientClass.add_plugin(PluginClass)

Register a plugin by name


ClientClass.add_plugin('gem-name.PluginClass')

Register a plugin with an object


plugin = MyPluginClass.new(options)
ClientClass.add_plugin(plugin)

Parameters:

  • plugin (Class, Symbol, String, Object)

See Also:



161
162
163
# File 'lib/seahorse/client/base.rb', line 161

def add_plugin(plugin)
  @plugins.add(plugin)
end

.apiModel::Api

Returns:



205
206
207
# File 'lib/seahorse/client/base.rb', line 205

def api
  @api ||= Model::Api.new
end

.clear_pluginsvoid

This method returns an undefined value.



179
180
181
# File 'lib/seahorse/client/base.rb', line 179

def clear_plugins
  @plugins.set([])
end

.define(options = {}) ⇒ Class<Client::Base> Also known as: extend

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :api (Model::Api, Hash) — default: {}
  • :plugins (Array<Plugin>) — default: []

    A list of plugins to add to the client class created.

Returns:



223
224
225
226
227
228
229
230
# File 'lib/seahorse/client/base.rb', line 223

def define(options = {})
  subclass = Class.new(self)
  subclass.set_api(options[:api] || api)
  Array(options[:plugins]).each do |plugin|
    subclass.add_plugin(plugin)
  end
  subclass
end

.new(options = {}) ⇒ Object



131
132
133
134
135
136
137
138
# File 'lib/seahorse/client/base.rb', line 131

def new(options = {})
  plugins = build_plugins
  options = options.dup
  before_initialize(plugins, options)
  client = allocate
  client.send(:initialize, plugins, options)
  client
end

.pluginsArray<Plugin>

Returns the list of registered plugins for this Client. Plugins are inherited from the client super class when the client is defined.



200
201
202
# File 'lib/seahorse/client/base.rb', line 200

def plugins
  Array(@plugins).freeze
end

.remove_plugin(plugin) ⇒ void

This method returns an undefined value.



170
171
172
# File 'lib/seahorse/client/base.rb', line 170

def remove_plugin(plugin)
  @plugins.remove(plugin)
end

.set_api(api) ⇒ Model::Api

Parameters:

Returns:



211
212
213
214
215
216
217
# File 'lib/seahorse/client/base.rb', line 211

def set_api(api)
  if api.is_a?(Hash)
    @api = Model::Api.new(api)
  else
    @api = api
  end
end

.set_plugins(plugins) ⇒ void

This method returns an undefined value.

Parameters:

See Also:



189
190
191
# File 'lib/seahorse/client/base.rb', line 189

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.

Parameters:

  • operation_name (Symbol, String)

Returns:



35
36
37
38
39
# File 'lib/seahorse/client/base.rb', line 35

def build_request(operation_name, params = {})
  Request.new(
    @handlers.for(operation_name),
    context_for(operation_name, params))
end

#inspectObject

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.



48
49
50
# File 'lib/seahorse/client/base.rb', line 48

def inspect
  "#<#{self.class.name}>"
end

#operation(name) ⇒ Model::Operation

Parameters:

  • name (String)

Returns:



43
44
45
# File 'lib/seahorse/client/base.rb', line 43

def operation(name)
  config.api.operation(name)
end

#operation_namesArray<Symbol>

Returns a list of valid request operation names. These are valid arguments to #build_request and are also valid methods.

Returns:

  • (Array<Symbol>)

    Returns a list of valid request operation names. These are valid arguments to #build_request and are also valid methods.



55
56
57
# File 'lib/seahorse/client/base.rb', line 55

def operation_names
  self.class.api.operation_names
end

#respond_to?(method_name, *args) ⇒ Boolean

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:

  • (Boolean)


60
61
62
63
64
65
66
# File 'lib/seahorse/client/base.rb', line 60

def respond_to?(method_name, *args)
  if request_method?(method_name)
    true
  else
    super
  end
end