class Aws::Stubbing::Protocols::Rest

def apply_body(api, operation, resp, data)

def apply_body(api, operation, resp, data)
  resp.body = build_body(api, operation, data)
end

def apply_headers(operation, resp, data)

def apply_headers(operation, resp, data)
  Aws::Rest::Request::Headers.new(operation.output).apply(resp, data)
end

def apply_status_code(operation, resp, data)

def apply_status_code(operation, resp, data)
  operation.output.shape.members.each do |member_name, member_ref|
    if member_ref.location == 'statusCode'
      resp.status_code = data[member_name] if data.key?(member_name)
    end
  end
end

def build_body(api, operation, data)

def build_body(api, operation, data)
  rules = operation.output
  if head_operation(operation)
    ""
  elsif streaming?(rules)
    data[rules[:payload]]
  elsif rules[:payload]
    body_for(api, operation, rules[:payload_member], data[rules[:payload]])
  else
    filtered = Seahorse::Model::Shapes::ShapeRef.new(
      shape: Seahorse::Model::Shapes::StructureShape.new.tap do |s|
        rules.shape.members.each do |member_name, member_ref|
          s.add_member(member_name, member_ref) if member_ref.location.nil?
        end
      end
    )
    body_for(api, operation, filtered, data)
  end
end

def head_operation(operation)

def head_operation(operation)
  operation.http_method == "HEAD"
end

def new_http_response

def new_http_response
  resp = Seahorse::Client::Http::Response.new
  resp.status_code = 200
  resp.headers["x-amzn-RequestId"] = "stubbed-request-id"
  resp
end

def streaming?(ref)

def streaming?(ref)
  if ref[:payload]
    case ref[:payload_member].shape
    when StringShape then true
    when BlobShape then true
    else false
    end
  else
    false
  end
end

def stub_data(api, operation, data)

def stub_data(api, operation, data)
  resp = new_http_response
  apply_status_code(operation, resp, data)
  apply_headers(operation, resp, data)
  apply_body(api, operation, resp, data)
  resp
end