Class: Seahorse::Client::Plugins::OperationMethods

Inherits:
Seahorse::Client::Plugin show all
Defined in:
lib/seahorse/client/plugins/operation_methods.rb

Overview

Defines a helper method for each API operation that builds and sends the named request.

# Helper Methods

This plugin adds a helper method that lists the available API operations.

client.operation_names
#=> [:api_operation_name1, :api_operation_name2, ...]

Additionally, it adds a helper method for each operation. This helper handles building and sending the appropriate Request.

# without OperationMethods plugin
req = client.build_request(:api_operation_name, request_params)
resp = req.send_request

# using the helper method defined by OperationMethods
resp = client.api_operation_name(request_params)

Instance Method Summary collapse

Methods inherited from Seahorse::Client::Plugin

#add_handlers, #add_options, after_initialize, after_initialize_hooks, #before_initialize, before_initialize, before_initialize_hooks, handlers, literal, option, options

Methods included from HandlerBuilder

#handle, #handle_request, #handle_response, #handler_for, #new_handler

Instance Method Details

#add_operation_helpers(client, operations) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/seahorse/client/plugins/operation_methods.rb', line 40

def add_operation_helpers(client, operations)
  operations.each do |name|
    client.class.send(:define_method, name) do |*args, &block|
      params = args[0] || {}
      send_options = args[1] || {}
      build_request(name, params).send_request(send_options, &block)
    end
  end
  client.class.send(:define_method, :operation_names) { operations }
end

#after_initialize(client) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/seahorse/client/plugins/operation_methods.rb', line 30

def after_initialize(client)
  unless client.respond_to?(:operation_names)
    client.class.mutex.synchronize do
      unless client.respond_to?(:operation_names)
        add_operation_helpers(client, client.config.api.operation_names)
      end
    end
  end
end