Skip to content

Commit b2f60f1

Browse files
committed
Add additional handling for apigatewaymanagementapi since it requires an api-id to be passed into the host
1 parent feec7b3 commit b2f60f1

1 file changed

Lines changed: 27 additions & 22 deletions

File tree

priv/rest.erl.eex

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<%= if context.docstring != "%% @doc" do %><%= context.docstring %><% end %>
55
-module(<%= context.module_name %>).
66
<%= if context.module_name == "aws_apigatewaymanagementapi" do %>
7-
-export([<%= Enum.map(context.actions, fn(action) -> if action.method == "GET" do ["#{action.function_name}/#{action.arity - 2}"] else [] end ++ ["#{action.function_name}/#{action.arity}", "#{action.function_name}/#{action.arity + 1}"] end) |> List.flatten |> Enum.join(",\n ") %>]).
7+
-export([<%= Enum.map(context.actions, fn(action) -> if action.method == "GET" do ["#{action.function_name}/#{action.arity - 1}"] else [] end ++ ["#{action.function_name}/#{action.arity + 1}", "#{action.function_name}/#{action.arity + 2}"] end) |> List.flatten |> Enum.join(",\n ") %>]).
88
<% else %>
99
-export([<%= Enum.map(context.actions, fn(action) -> if action.method == "GET" do ["#{action.function_name}/#{action.arity - 3}"] else [] end ++ ["#{action.function_name}/#{action.arity - 1}", "#{action.function_name}/#{action.arity}"] end) |> List.flatten |> Enum.join(",\n ") %>]).
1010
<% end %>
@@ -50,21 +50,21 @@ end) %>
5050
%%====================================================================
5151
<%= for action <- context.actions do %>
5252
<%= action.docstring %><%= if action.method == "GET" do %>
53-
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>) ->
53+
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary(), list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>) ->
5454
<%= AWS.CodeGen.Types.return_type(context.language, action)%>.
55-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>)
55+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>)
5656
when is_map(Client) ->
57-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, #{}, #{}).
57+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, #{}, #{}).
5858

59-
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, map(), map()) ->
59+
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary(), list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, map(), map()) ->
6060
<%= AWS.CodeGen.Types.return_type(context.language, action)%>.
61-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, QueryMap, HeadersMap)
61+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, QueryMap, HeadersMap)
6262
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
63-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, QueryMap, HeadersMap, []).
63+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, QueryMap, HeadersMap, []).
6464

65-
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, map(), map(), proplists:proplist()) ->
65+
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary(), list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, map(), map(), proplists:proplist()) ->
6666
<%= AWS.CodeGen.Types.return_type(context.language, action)%>.
67-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, QueryMap, HeadersMap, Options0)
67+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.required_function_parameters(action) %>, QueryMap, HeadersMap, Options0)
6868
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
6969
Path = ["<%= if context.module_name == "aws_apigatewaymanagementapi" do %>/", Stage, "<% end %><%= AWS.CodeGen.RestService.Action.url_path(action) %>"],<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>
7070
<%= if !String.contains?("Bucket", AWS.CodeGen.RestService.required_function_parameters(action)) do %><% else %> Bucket = undefined,<% end %><% end %>
@@ -93,7 +93,7 @@ end) %>
9393
<% else %>
9494
Query_ = [],
9595
<% end %><%= if length(action.response_header_parameters) > 0 do %>
96-
case request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>) of
96+
case request(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>#{api_id => ApiId}<% else %><% end %>, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>) of
9797
{ok, Body0, {_, ResponseHeaders, _} = Response} ->
9898
ResponseHeadersParams =
9999
[<%= for parameter <- Enum.drop action.response_header_parameters, -1 do %>
@@ -111,16 +111,16 @@ end) %>
111111
Result ->
112112
Result
113113
end.<% else %>
114-
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>).<% end %>
114+
request(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>#{api_id => ApiId}<% else %><% end %>, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>).<% end %>
115115
<% else %>
116-
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, <%= AWS.CodeGen.Types.function_argument_type(context.language, action)%>) ->
116+
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary(), list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, <%= AWS.CodeGen.Types.function_argument_type(context.language, action)%>) ->
117117
<%= AWS.CodeGen.Types.return_type(context.language, action)%>.
118-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.function_parameters(action) %>, Input) ->
119-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.function_parameters(action) %>, Input, []).
118+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.function_parameters(action) %>, Input) ->
119+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.function_parameters(action) %>, Input, []).
120120

121-
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, <%= AWS.CodeGen.Types.function_argument_type(context.language, action)%>, proplists:proplist()) ->
121+
-spec <%= action.function_name %>(aws_client:aws_client()<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, list() | binary(), list() | binary()<% end %><%= AWS.CodeGen.Types.required_function_parameter_types(action) %>, <%= AWS.CodeGen.Types.function_argument_type(context.language, action)%>, proplists:proplist()) ->
122122
<%= AWS.CodeGen.Types.return_type(context.language, action)%>.
123-
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, Stage<% end %><%= AWS.CodeGen.RestService.function_parameters(action) %>, Input0, Options0) ->
123+
<%= action.function_name %>(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, ApiId, Stage<% end %><%= AWS.CodeGen.RestService.function_parameters(action) %>, Input0, Options0) ->
124124
Method = <%= AWS.CodeGen.RestService.Action.method(action) %>,
125125
Path = ["<%= if context.module_name == "aws_apigatewaymanagementapi" do %>/", Stage, "<% end %><%= AWS.CodeGen.RestService.Action.url_path(action) %>"],<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>
126126
<%= if !String.contains?("Bucket", AWS.CodeGen.RestService.required_function_parameters(action)) do %><% else %> Bucket = undefined,<% end %><% end %>
@@ -177,7 +177,7 @@ end) %>
177177
Result ->
178178
Result
179179
end.<% else %>
180-
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>).<% end %>
180+
request(Client<%= if context.module_name == "aws_apigatewaymanagementapi" do %>#{api_id => ApiId}<% else %><% end %>, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>, Bucket<% end %>).<% end %>
181181
<% end %><% end %>
182182
%%====================================================================
183183
%% Internal functions
@@ -231,7 +231,7 @@ do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusC
231231
Headers1 = aws_request:add_headers(AdditionalHeaders, Headers0),
232232

233233
MethodBin = aws_request:method_to_binary(Method),
234-
SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload),
234+
SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload<%= if context.module_name == "aws_apigatewaymanagementapi" do %>, [{uri_encode_path, true}]<% else %><% end %>),
235235
Response = hackney:request(Method, URL, SignedHeaders, Payload, Options),
236236
DecodeBody = not proplists:get_value(receive_body_as_binary, Options),
237237
handle_response(Response, SuccessStatusCode, DecodeBody).
@@ -288,7 +288,13 @@ handle_response({ok, StatusCode, ResponseHeaders, Client}, _, _DecodeBody) ->
288288
end;
289289
handle_response({error, Reason}, _, _DecodeBody) ->
290290
{error, Reason}.
291-
<%= if context.endpoint_prefix == "s3-control" do %>
291+
<%= if context.module_name == "aws_apigatewaymanagementapi" do %>
292+
build_host(_EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) ->
293+
Endpoint;
294+
build_host(_EndpointPrefix, #{region := <<"local">>}) ->
295+
<<"localhost">>;
296+
build_host(EndpointPrefix, #{api_id := ApiId, region := Region, endpoint := Endpoint}) ->
297+
aws_util:binary_join([ApiId, EndpointPrefix, Region, Endpoint], <<".">>).<% else %><%= if context.endpoint_prefix == "s3-control" do %>
292298
build_host(_AccountId, _EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) ->
293299
Endpoint;
294300
build_host(_AccountId, _EndpointPrefix, #{region := <<"local">>}) ->
@@ -314,8 +320,7 @@ build_host(_EndpointPrefix, #{region := <<"local">>}, _Bucket) ->
314320
build_host(EndpointPrefix, #{endpoint := Endpoint}, undefined) ->
315321
aws_util:binary_join([EndpointPrefix, Endpoint], <<".">>);
316322
build_host(EndpointPrefix, #{endpoint := Endpoint}, Bucket) ->
317-
aws_util:binary_join([Bucket, EndpointPrefix, Endpoint], <<".">>).
318-
<% else %>
323+
aws_util:binary_join([Bucket, EndpointPrefix, Endpoint], <<".">>).<% else %>
319324
build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}, undefined) ->
320325
aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>);
321326
build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}, Bucket) ->
@@ -326,7 +331,7 @@ build_host(_EndpointPrefix, #{region := <<"local">>}) ->
326331
build_host(EndpointPrefix, #{endpoint := Endpoint}) ->
327332
aws_util:binary_join([EndpointPrefix, Endpoint], <<".">>).<% else %>
328333
build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) ->
329-
aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>).<% end %><% end %><% end %>
334+
aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>).<% end %><% end %><% end %><% end %>
330335

331336
<%= if AWS.CodeGen.RestService.Context.s3_context?(context) do %>build_url(Host0, Path0, Client, Bucket) ->
332337
Proto = aws_client:proto(Client),

0 commit comments

Comments
 (0)