Sha256: 908a0fdae2c0b97cbcce912bd0bcf45297762fb34c3bd6ef9a9b46b698078f00
Contents?: true
Size: 1.18 KB
Versions: 2
Compression:
Stored size: 1.18 KB
Contents
module Seahorse module Client # This module provides the ability to add handlers to a class or # module. The including class or extending module must respond to # `#handlers`, returning a {HandlerList}. module HandlerBuilder def handle_request(*args, &block) handler(*args) do |context| block.call(context) @handler.call(context) end end def handle_response(*args, &block) handler(*args) do |context| @handler.call(context).on_complete do |response| block.call(response) end end end def handle(*args, &block) options = args.last.is_a?(Hash) ? args.pop : {} handler_class = block ? handler_for(*args, &block) : args.first handlers.add(handler_class, options) end alias handler handle # @api private def handler_for(name = nil, &block) if name const_set(name, new_handler(block)) else new_handler(block) end end # @api private def new_handler(block) Class.new(Handler) do define_method(:call, &block) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
aws-sdk-core-2.0.0.rc2 | vendor/seahorse/lib/seahorse/client/handler_builder.rb |
aws-sdk-core-2.0.0.rc1 | vendor/seahorse/lib/seahorse/client/handler_builder.rb |