class Aws::Api::OperationTranslator
def handle_input_output(input_or_output, src)
def handle_input_output(input_or_output, src) if src src = src.merge('type' => input_or_output) translator = "#{input_or_output.capitalize}ShapeTranslator" translator = Aws::Api::const_get(translator) shape = translator.translate(src, @options) shape.members.each do |member_name, member| if member.metadata['payload'] member.metadata.delete('payload') shape.payload = member_name end end instance_variable_set("@#{input_or_output}", shape) end end
def path_param?(path, param_name)
def path_param?(path, param_name) path.split('?').first.include?("{#{param_name}}") end
def set_errors(errors)
def set_errors(errors) @errors = errors.map { |src| OutputShapeTranslator.translate(src, @options) } @errors = nil if @errors.empty? end
def set_http(http)
def set_http(http) @properties['http_method'] = http['method'] @properties['http_path'] = http['uri'] end
def set_input(src)
def set_input(src) handle_input_output('input', src) end
def set_name(name)
def set_name(name) # strip api version from operation name @properties['name'] = name.sub(/\d{4}_\d{2}_\d{2}$/, '') end
def set_output(src)
def set_output(src) handle_input_output('output', src) end
def translated
def translated @properties['http_method'] ||= 'POST' @properties['http_path'] ||= '/' if @input @input.members.each_pair do |member_name, member_shape| if member_shape.location == 'uri' placeholder = member_shape.serialized_name @properties['http_path'].sub!("{#{placeholder}}", "{#{member_name}}") member_shape.serialized_name = nil if path_param?(@properties['http_path'], member_name) member_shape.required = true end end end end operation = Seahorse::Model::Operation.from_hash(@properties) operation.input = @input if @input operation.output = @output if @output operation.errors = @errors if @errors and @options[:errors] operation end