Skip to content

Commit 32573f7

Browse files
authored
[erlang] erlang-server generator fixes (#20717)
* Improve perfomance for map updates * Fix key authorization crash * Update samples
1 parent 8040e9a commit 32573f7

File tree

16 files changed

+68
-68
lines changed

16 files changed

+68
-68
lines changed

modules/openapi-generator/src/main/resources/erlang-server/api.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ populate_request_params(_, [], Req, _, Model) ->
179179
populate_request_params(OperationID, [ReqParamName | T], Req0, ValidatorState, Model0) ->
180180
case populate_request_param(OperationID, ReqParamName, Req0, ValidatorState) of
181181
{ok, V, Req} ->
182-
Model = maps:put(ReqParamName, V, Model0),
182+
Model = Model0#{ReqParamName => V},
183183
populate_request_params(OperationID, T, Req, ValidatorState, Model);
184184
Error ->
185185
Error

modules/openapi-generator/src/main/resources/erlang-server/handler.mustache

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Exposes the following operation IDs:
3636
{operation_id :: operation_id(),
3737
accept_callback :: {{packageName}}_logic_handler:accept_callback(),
3838
provide_callback :: {{packageName}}_logic_handler:provide_callback(),
39-
api_key_handler :: {{packageName}}_logic_handler:api_key_callback(),
39+
api_key_callback :: {{packageName}}_logic_handler:api_key_callback(),
4040
context = #{} :: {{packageName}}_logic_handler:context()}).
4141

4242
-type state() :: #state{}.
@@ -52,7 +52,7 @@ init(Req, {Operations, Module}) ->
5252
State = #state{operation_id = OperationID,
5353
accept_callback = fun Module:accept_callback/4,
5454
provide_callback = fun Module:provide_callback/4,
55-
api_key_handler = fun Module:authorize_api_key/2},
55+
api_key_callback = fun Module:api_key_callback/2},
5656
{cowboy_rest, Req, State}.
5757

5858
-spec allowed_methods(cowboy_req:req(), state()) ->
@@ -69,8 +69,8 @@ init(Req, {Operations, Module}) ->
6969
{{#authMethods.size}}
7070
is_authorized(Req0,
7171
#state{operation_id = '{{operationIdOriginal}}' = OperationID,
72-
api_key_handler = Handler} = State) ->
73-
case {{packageName}}_auth:authorize_api_key(Handler, OperationID, {{#isApiKey.isKeyInQuery}}qs_val, {{/isApiKey.isKeyInQuery}}{{^isApiKey.isKeyInQuery}}header, {{/isApiKey.isKeyInQuery}}{{#isApiKey}}"{{keyParamName}}", {{/isApiKey}}{{^isApiKey}}"authorization", {{/isApiKey}}Req0) of
72+
api_key_callback = Handler} = State) ->
73+
case {{packageName}}_auth:authorize_api_key(Handler, OperationID, {{#isApiKey.isKeyInQuery}}qs_val, {{/isApiKey.isKeyInQuery}}{{^isApiKey.isKeyInQuery}}header, {{/isApiKey.isKeyInQuery}}{{#isApiKey}}"{{keyParamName}}", {{/isApiKey}}{{^isApiKey}}<<"authorization">>, {{/isApiKey}}Req0) of
7474
{true, Context, Req} ->
7575
{true, Req, State#state{context = Context}};
7676
{false, AuthHeader, Req} ->

modules/openapi-generator/src/main/resources/erlang-server/server.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ get_cowboy_config(LogicHandler, ExtraOpts) ->
3333
maps:fold(fun get_cowboy_config/3, DefaultOpts, ExtraOpts).
3434

3535
get_cowboy_config(env, #{dispatch := _Dispatch} = Env, AccIn) ->
36-
maps:put(env, Env, AccIn);
36+
AccIn#{env => Env};
3737
get_cowboy_config(env, NewEnv, #{env := OldEnv} = AccIn) ->
3838
Env = maps:merge(OldEnv, NewEnv),
39-
maps:put(env, Env, AccIn);
39+
AccIn#{env => Env};
4040
get_cowboy_config(Key, Value, AccIn) ->
41-
maps:put(Key, Value, AccIn).
41+
AccIn#{Key => Value}.
4242

4343
get_default_dispatch(LogicHandler) ->
4444
Paths = {{packageName}}_router:get_paths(LogicHandler),

samples/server/echo_api/erlang-server/src/openapi_api.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ populate_request_params(_, [], Req, _, Model) ->
686686
populate_request_params(OperationID, [ReqParamName | T], Req0, ValidatorState, Model0) ->
687687
case populate_request_param(OperationID, ReqParamName, Req0, ValidatorState) of
688688
{ok, V, Req} ->
689-
Model = maps:put(ReqParamName, V, Model0),
689+
Model = Model0#{ReqParamName => V},
690690
populate_request_params(OperationID, T, Req, ValidatorState, Model);
691691
Error ->
692692
Error

samples/server/echo_api/erlang-server/src/openapi_auth_handler.erl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ To test HTTP bearer authentication
4141
{operation_id :: operation_id(),
4242
accept_callback :: openapi_logic_handler:accept_callback(),
4343
provide_callback :: openapi_logic_handler:provide_callback(),
44-
api_key_handler :: openapi_logic_handler:api_key_callback(),
44+
api_key_callback :: openapi_logic_handler:api_key_callback(),
4545
context = #{} :: openapi_logic_handler:context()}).
4646

4747
-type state() :: #state{}.
@@ -57,7 +57,7 @@ init(Req, {Operations, Module}) ->
5757
State = #state{operation_id = OperationID,
5858
accept_callback = fun Module:accept_callback/4,
5959
provide_callback = fun Module:provide_callback/4,
60-
api_key_handler = fun Module:authorize_api_key/2},
60+
api_key_callback = fun Module:api_key_callback/2},
6161
{cowboy_rest, Req, State}.
6262

6363
-spec allowed_methods(cowboy_req:req(), state()) ->
@@ -73,17 +73,17 @@ allowed_methods(Req, State) ->
7373
{true | {false, iodata()}, cowboy_req:req(), state()}.
7474
is_authorized(Req0,
7575
#state{operation_id = 'test/auth/http/basic' = OperationID,
76-
api_key_handler = Handler} = State) ->
77-
case openapi_auth:authorize_api_key(Handler, OperationID, header, "authorization", Req0) of
76+
api_key_callback = Handler} = State) ->
77+
case openapi_auth:authorize_api_key(Handler, OperationID, header, <<"authorization">>, Req0) of
7878
{true, Context, Req} ->
7979
{true, Req, State#state{context = Context}};
8080
{false, AuthHeader, Req} ->
8181
{{false, AuthHeader}, Req, State}
8282
end;
8383
is_authorized(Req0,
8484
#state{operation_id = 'test/auth/http/bearer' = OperationID,
85-
api_key_handler = Handler} = State) ->
86-
case openapi_auth:authorize_api_key(Handler, OperationID, header, "authorization", Req0) of
85+
api_key_callback = Handler} = State) ->
86+
case openapi_auth:authorize_api_key(Handler, OperationID, header, <<"authorization">>, Req0) of
8787
{true, Context, Req} ->
8888
{true, Req, State#state{context = Context}};
8989
{false, AuthHeader, Req} ->

samples/server/echo_api/erlang-server/src/openapi_body_handler.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Test empty json (request body)
8181
{operation_id :: operation_id(),
8282
accept_callback :: openapi_logic_handler:accept_callback(),
8383
provide_callback :: openapi_logic_handler:provide_callback(),
84-
api_key_handler :: openapi_logic_handler:api_key_callback(),
84+
api_key_callback :: openapi_logic_handler:api_key_callback(),
8585
context = #{} :: openapi_logic_handler:context()}).
8686

8787
-type state() :: #state{}.
@@ -97,7 +97,7 @@ init(Req, {Operations, Module}) ->
9797
State = #state{operation_id = OperationID,
9898
accept_callback = fun Module:accept_callback/4,
9999
provide_callback = fun Module:provide_callback/4,
100-
api_key_handler = fun Module:authorize_api_key/2},
100+
api_key_callback = fun Module:api_key_callback/2},
101101
{cowboy_rest, Req, State}.
102102

103103
-spec allowed_methods(cowboy_req:req(), state()) ->

samples/server/echo_api/erlang-server/src/openapi_form_handler.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Test form parameter(s) for oneOf schema
4646
{operation_id :: operation_id(),
4747
accept_callback :: openapi_logic_handler:accept_callback(),
4848
provide_callback :: openapi_logic_handler:provide_callback(),
49-
api_key_handler :: openapi_logic_handler:api_key_callback(),
49+
api_key_callback :: openapi_logic_handler:api_key_callback(),
5050
context = #{} :: openapi_logic_handler:context()}).
5151

5252
-type state() :: #state{}.
@@ -62,7 +62,7 @@ init(Req, {Operations, Module}) ->
6262
State = #state{operation_id = OperationID,
6363
accept_callback = fun Module:accept_callback/4,
6464
provide_callback = fun Module:provide_callback/4,
65-
api_key_handler = fun Module:authorize_api_key/2},
65+
api_key_callback = fun Module:api_key_callback/2},
6666
{cowboy_rest, Req, State}.
6767

6868
-spec allowed_methods(cowboy_req:req(), state()) ->

samples/server/echo_api/erlang-server/src/openapi_header_handler.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Test header parameter(s)
3636
{operation_id :: operation_id(),
3737
accept_callback :: openapi_logic_handler:accept_callback(),
3838
provide_callback :: openapi_logic_handler:provide_callback(),
39-
api_key_handler :: openapi_logic_handler:api_key_callback(),
39+
api_key_callback :: openapi_logic_handler:api_key_callback(),
4040
context = #{} :: openapi_logic_handler:context()}).
4141

4242
-type state() :: #state{}.
@@ -52,7 +52,7 @@ init(Req, {Operations, Module}) ->
5252
State = #state{operation_id = OperationID,
5353
accept_callback = fun Module:accept_callback/4,
5454
provide_callback = fun Module:provide_callback/4,
55-
api_key_handler = fun Module:authorize_api_key/2},
55+
api_key_callback = fun Module:api_key_callback/2},
5656
{cowboy_rest, Req, State}.
5757

5858
-spec allowed_methods(cowboy_req:req(), state()) ->

samples/server/echo_api/erlang-server/src/openapi_path_handler.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Test path parameter(s)
3636
{operation_id :: operation_id(),
3737
accept_callback :: openapi_logic_handler:accept_callback(),
3838
provide_callback :: openapi_logic_handler:provide_callback(),
39-
api_key_handler :: openapi_logic_handler:api_key_callback(),
39+
api_key_callback :: openapi_logic_handler:api_key_callback(),
4040
context = #{} :: openapi_logic_handler:context()}).
4141

4242
-type state() :: #state{}.
@@ -52,7 +52,7 @@ init(Req, {Operations, Module}) ->
5252
State = #state{operation_id = OperationID,
5353
accept_callback = fun Module:accept_callback/4,
5454
provide_callback = fun Module:provide_callback/4,
55-
api_key_handler = fun Module:authorize_api_key/2},
55+
api_key_callback = fun Module:api_key_callback/2},
5656
{cowboy_rest, Req, State}.
5757

5858
-spec allowed_methods(cowboy_req:req(), state()) ->

samples/server/echo_api/erlang-server/src/openapi_query_handler.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Test query parameter(s)
8181
{operation_id :: operation_id(),
8282
accept_callback :: openapi_logic_handler:accept_callback(),
8383
provide_callback :: openapi_logic_handler:provide_callback(),
84-
api_key_handler :: openapi_logic_handler:api_key_callback(),
84+
api_key_callback :: openapi_logic_handler:api_key_callback(),
8585
context = #{} :: openapi_logic_handler:context()}).
8686

8787
-type state() :: #state{}.
@@ -97,7 +97,7 @@ init(Req, {Operations, Module}) ->
9797
State = #state{operation_id = OperationID,
9898
accept_callback = fun Module:accept_callback/4,
9999
provide_callback = fun Module:provide_callback/4,
100-
api_key_handler = fun Module:authorize_api_key/2},
100+
api_key_callback = fun Module:api_key_callback/2},
101101
{cowboy_rest, Req, State}.
102102

103103
-spec allowed_methods(cowboy_req:req(), state()) ->

0 commit comments

Comments
 (0)