1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
# frozen_string_literal: true
module Aws
module Rest
module Request
class Builder
def apply(context)
populate_http_method(context)
populate_endpoint(context)
populate_headers(context)
populate_body(context)
end
private
def populate_http_method(context)
context.http_request.http_method = context.operation.http_method
end
def populate_endpoint(context)
context.http_request.endpoint = Endpoint.new(
context.operation.input,
context.operation.http_request_uri,
).uri(context.http_request.endpoint, context.params)
end
def populate_headers(context)
headers = Headers.new(context.operation.input)
headers.apply(context.http_request, context.params)
end
def populate_body(context)
Body.new(
serializer_class(context),
context.operation.input
).apply(context.http_request, context.params)
end
def serializer_class(context)
protocol = context.config.api.metadata['protocol']
case protocol
when 'rest-xml' then Xml::Builder
when 'rest-json' then Json::Builder
when 'api-gateway' then Json::Builder
else raise "unsupported protocol #{protocol}"
end
end
end
end
end
end
|