@@ -209,9 +209,11 @@ do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusC
209209 Client1 = Client#{service => <<"<%= context.signing_name %>">><%= if context.is_global do %>,
210210 region => <<"<%= context.credential_scope %>">><% end %>},
211211 <%= if context.endpoint_prefix == "s3-control" do %>AccountId = proplists:get_value(<<"x-amz-account-id">>, Headers0),
212- Host = build_host(AccountId, <<"<%= context.endpoint_prefix %>">>, Client1),<% else %><%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>Host = build_host(<<"<%= context.endpoint_prefix %>">>, Client1, Bucket),<%else %>Host = build_host(<<"<%= context.endpoint_prefix %>">>, Client1),<% end %><% end %>
213- URL0 = build_url(Host, Path, Client1<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>),
214- URL = aws_request:add_query(URL0, Query),
212+ DefaultHost = build_host(AccountId, <<"<%= context.endpoint_prefix %>">>, Client1),<% else %><%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>DefaultHost = build_host(<<"<%= context.endpoint_prefix %>">>, Client1, Bucket),<%else %>DefaultHost = build_host(<<"<%= context.endpoint_prefix %>">>, Client1),<% end %><% end %>
213+ URL0 = build_url(DefaultHost, Path, Client1<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>),
214+ PathBin = erlang:iolist_to_binary(Path),
215+ {URL1, Host} = aws_util:apply_endpoint_url_override(URL0, DefaultHost, PathBin, <<"<%= context.endpoint_url_env_var %>">>),
216+ URL = aws_request:add_query(URL1, Query),
215217 AdditionalHeaders1 = [ {<<"Host">>, Host}
216218 , {<<"Content-Type">>, <<"<%= context.content_type %>">>}
217219 ],
@@ -332,7 +334,6 @@ build_host(EndpointPrefix, #{endpoint := Endpoint}) ->
332334 aws_util:binary_join([EndpointPrefix, Endpoint], <<".">>).<% else %>
333335build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) ->
334336 aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>).<% end %><% end %><% end %><% end %>
335-
336337<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>build_url(Host0, Path0, Client, Bucket) ->
337338 Proto = aws_client:proto(Client),
338339 %% Mocks are notoriously bad with host-style requests, just skip it and use path-style for anything local
0 commit comments