class AWS::Core::Client::ClientRequestMethodBuilder

@private

def configure_request options = {}, &block

def configure_request options = {}, &block
  name = "configure_#{@method_name}_request"
  MetaUtils.class_extend_method(@client_class, name, &block)
  if block.arity == 3
    m = Module.new
    m.module_eval(<<-END)
      def #{name}(req, options, &block)
        super(req, options, block)
      end
    END
    @client_class.send(:include, m)
  end
end

def initialize client_class, method_name, &block

def initialize client_class, method_name, &block
  @client_class = client_class
  @method_name = method_name
  configure_request {|request, options|}
  process_response {|response|}
  simulate_response {|response|}
  instance_eval(&block)
end

def process_response &block

def process_response &block
  name = "process_#{@method_name}_response"
  MetaUtils.class_extend_method(@client_class, name, &block)
end

def simulate_response &block

def simulate_response &block
  name = "simulate_#{@method_name}_response"
  MetaUtils.class_extend_method(@client_class, name, &block)
end