From b1bf1c09af767fec8552b5b3c0fd4ca877524b79 Mon Sep 17 00:00:00 2001
From: Mikael Lixenstrand <78344223+lixen-wg2@users.noreply.github.com>
Date: Wed, 5 May 2021 10:52:45 +0200
Subject: [PATCH 1/5] fix handle_request_json spec res

---
 .../src/main/resources/erlang-server/handler.mustache           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
index 80314899a38..6d7912b373b 100644
--- a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
+++ b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
@@ -209,7 +209,7 @@ process_response(Response, Req0, State = #state{operation_id = OperationID}) ->
             {stop, Req, State}
     end.
 
--spec handle_request_json(cowboy_req:req(), state()) -> {cowboy_req:resp_body(), cowboy_req:req(), state()}.
+-spec handle_request_json(cowboy_req:req(), state()) -> processed_response().
 
 handle_request_json(
     Req0,
-- 
GitLab


From a544b8296deb05d9c6987b0e11ef2ce30b192d8d Mon Sep 17 00:00:00 2001
From: Mikael Lixenstrand <78344223+lixen-wg2@users.noreply.github.com>
Date: Wed, 5 May 2021 11:23:29 +0200
Subject: [PATCH 2/5] fix client spec

---
 .../src/main/resources/erlang-client/api.mustache             | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/erlang-client/api.mustache b/modules/openapi-generator/src/main/resources/erlang-client/api.mustache
index a2335745bbb..ddb5dee0138 100644
--- a/modules/openapi-generator/src/main/resources/erlang-client/api.mustache
+++ b/modules/openapi-generator/src/main/resources/erlang-client/api.mustache
@@ -3,7 +3,7 @@
 -export([{{#operations}}{{#operation}}{{^-first}},
          {{/-first}}{{operationId}}/{{arityRequired}}, {{operationId}}/{{arityOptional}}{{/operation}}{{/operations}}]).
 
--define(BASE_URL, "{{{basePathWithoutHost}}}").
+-define(BASE_URL, <<"{{{basePathWithoutHost}}}">>).
 
 {{#operations}}
     {{#operation}}
@@ -21,7 +21,7 @@
     Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})),
 
     Method = {{httpMethod}},
-    Path = ["{{{replacedPathName}}}"],
+    Path = [<<"{{{replacedPathName}}}">>],
     QS = {{#queryParams.isEmpty}}[]{{/queryParams.isEmpty}}{{^queryParams.isEmpty}}lists:flatten([{{#joinWithComma}}{{#queryParams}}{{#required}}{{#qsEncode}}{{this}}{{/qsEncode}}  {{/required}}{{/queryParams}}{{/joinWithComma}}])++{{packageName}}_utils:optional_params([{{#joinWithComma}}{{#queryParams}}{{^required}}  '{{baseName}}'{{/required}}{{/queryParams}}{{/joinWithComma}}], _OptionalParams){{/queryParams.isEmpty}},
     Headers = {{#headerParams.isEmpty}}[]{{/headerParams.isEmpty}}{{^headerParams.isEmpty}}[{{#headerParams}}{{#required}}  {<<"{{baseName}}">>, {{paramName}}}{{/required}}{{/headerParams}}]++{{packageName}}_utils:optional_params([{{#joinWithComma}}{{#headerParams}}{{^required}}  '{{baseName}}'{{/required}}{{/headerParams}}{{/joinWithComma}}], _OptionalParams){{/headerParams.isEmpty}},
     Body1 = {{^formParams.isEmpty}}{form, [{{#joinWithComma}}{{#formParams}}{{#required}}  {<<"{{baseName}}">>, {{paramName}}}{{/required}}{{/formParams}}{{/joinWithComma}}]++{{packageName}}_utils:optional_params([{{#joinWithComma}}{{#formParams}}{{^required}}  '{{baseName}}'{{/required}}{{/formParams}}{{/joinWithComma}}], _OptionalParams)}{{/formParams.isEmpty}}{{#formParams.isEmpty}}{{#bodyParams.isEmpty}}[]{{/bodyParams.isEmpty}}{{^bodyParams.isEmpty}}{{#bodyParams}}{{paramName}}{{/bodyParams}}{{/bodyParams.isEmpty}}{{/formParams.isEmpty}},
-- 
GitLab


From 24836cd31c50e5fb2c1a938e5f96f9232037209f Mon Sep 17 00:00:00 2001
From: Mikael Lixenstrand <lixen@wgtwo.com>
Date: Tue, 18 May 2021 09:43:24 +0200
Subject: [PATCH 3/5] make it possible to answer with 0 size binary for 204

---
 .../src/main/resources/erlang-server/handler.mustache      | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
index 6d7912b373b..e919e9485c4 100644
--- a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
+++ b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
@@ -233,7 +233,7 @@ handle_request_json(
                 Body,
                 ValidatorState
             ),
-            PreparedBody = jsx:encode(Body),
+            PreparedBody = prepare_body(Body),
             Response = {ok, {Code, Headers, PreparedBody}},
             process_response(Response, Req1, State);
         {error, Reason, Req1} ->
@@ -241,3 +241,8 @@ handle_request_json(
     end.
 
 validate_headers(_, Req) -> {true, Req}.
+
+prepare_body(Body) when map_size(Body) > 0 ->
+    jsx:encode(Body);
+prepare_body(_Body) ->
+    <<>>.
-- 
GitLab


From 24ed0f3916719ed75b70834220c4d74872b5f53b Mon Sep 17 00:00:00 2001
From: Mikael Lixenstrand <lixen@wgtwo.com>
Date: Tue, 18 May 2021 12:03:34 +0200
Subject: [PATCH 4/5] only generate empty bin for 204

---
 .../src/main/resources/erlang-server/handler.mustache | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
index e919e9485c4..0e5747d9891 100644
--- a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
+++ b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
@@ -233,7 +233,7 @@ handle_request_json(
                 Body,
                 ValidatorState
             ),
-            PreparedBody = prepare_body(Body),
+            PreparedBody = prepare_body(Code, Body),
             Response = {ok, {Code, Headers, PreparedBody}},
             process_response(Response, Req1, State);
         {error, Reason, Req1} ->
@@ -242,7 +242,8 @@ handle_request_json(
 
 validate_headers(_, Req) -> {true, Req}.
 
-prepare_body(Body) when map_size(Body) > 0 ->
-    jsx:encode(Body);
-prepare_body(_Body) ->
-    <<>>.
+prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 ->
+    <<>>;
+
+prepare_body(_Code, Body) ->
+    jsx:encode(Body).
-- 
GitLab


From e153500960db69b2f08566ac17a06fb873abbbf9 Mon Sep 17 00:00:00 2001
From: Mikael Lixenstrand <lixen@wgtwo.com>
Date: Tue, 18 May 2021 12:03:34 +0200
Subject: [PATCH 5/5] only generate empty bin for 204

---
 .../src/main/resources/erlang-server/handler.mustache  | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
index e919e9485c4..dc1c47cc20e 100644
--- a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
+++ b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache
@@ -233,7 +233,7 @@ handle_request_json(
                 Body,
                 ValidatorState
             ),
-            PreparedBody = prepare_body(Body),
+            PreparedBody = prepare_body(Code, Body),
             Response = {ok, {Code, Headers, PreparedBody}},
             process_response(Response, Req1, State);
         {error, Reason, Req1} ->
@@ -242,7 +242,7 @@ handle_request_json(
 
 validate_headers(_, Req) -> {true, Req}.
 
-prepare_body(Body) when map_size(Body) > 0 ->
-    jsx:encode(Body);
-prepare_body(_Body) ->
-    <<>>.
+prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 ->
+    <<>>;
+prepare_body(_Code, Body) ->
+    jsx:encode(Body).
-- 
GitLab