Skip to content

Commit d994f96

Browse files
committed
implicit json decoding
1 parent d7b0887 commit d994f96

File tree

4 files changed

+26
-30
lines changed

4 files changed

+26
-30
lines changed

modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ defmodule {{moduleName}}.Connection do
150150
[
151151
{Tesla.Middleware.BaseUrl, base_url},
152152
{Tesla.Middleware.Headers, [{"user-agent", user_agent}]},
153-
{Tesla.Middleware.EncodeJson, engine: json_engine}
153+
{Tesla.Middleware.JSON, engine: json_engine}
154154
| middleware
155155
]
156156
end

modules/openapi-generator/src/main/resources/elixir/request_builder.ex.mustache

+12-14
Original file line numberDiff line numberDiff line change
@@ -187,20 +187,18 @@ defmodule {{moduleName}}.RequestBuilder do
187187
defp decode(%Tesla.Env{} = env, false), do: {:ok, env}
188188

189189
defp decode(%Tesla.Env{body: body}, %{}) do
190-
JSON.decode(body)
191-
end
192-
193-
defp decode(%Tesla.Env{body: body}, module) do
194-
case JSON.decode(body) do
195-
{:ok, objects} when is_list(objects) ->
196-
models = Enum.map(objects, fn object ->
197-
{:ok, model} = to_model(module, object)
198-
model
199-
end)
200-
{:ok, models}
201-
{:ok, params} -> to_model(module, params)
202-
{:error, error} -> {:error, error}
203-
end
190+
{:ok, body}
191+
end
192+
193+
defp decode(%Tesla.Env{body: response}, module) when is_list(response) do
194+
models = Enum.map(response, fn params ->
195+
{:ok, model} = to_model(module, params)
196+
model
197+
end)
198+
{:ok, models}
199+
end
200+
defp decode(%Tesla.Env{body: params}, module) do
201+
to_model(module, params)
204202
end
205203

206204
defp to_model(module, params) do

samples/client/petstore/elixir/lib/openapi_petstore/connection.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ defmodule OpenapiPetstore.Connection do
130130
[
131131
{Tesla.Middleware.BaseUrl, base_url},
132132
{Tesla.Middleware.Headers, [{"user-agent", user_agent}]},
133-
{Tesla.Middleware.EncodeJson, engine: json_engine}
133+
{Tesla.Middleware.JSON, engine: json_engine}
134134
| middleware
135135
]
136136
end

samples/client/petstore/elixir/lib/openapi_petstore/request_builder.ex

+12-14
Original file line numberDiff line numberDiff line change
@@ -189,20 +189,18 @@ defmodule OpenapiPetstore.RequestBuilder do
189189
defp decode(%Tesla.Env{} = env, false), do: {:ok, env}
190190

191191
defp decode(%Tesla.Env{body: body}, %{}) do
192-
JSON.decode(body)
193-
end
194-
195-
defp decode(%Tesla.Env{body: body}, module) do
196-
case JSON.decode(body) do
197-
{:ok, objects} when is_list(objects) ->
198-
models = Enum.map(objects, fn object ->
199-
{:ok, model} = to_model(module, object)
200-
model
201-
end)
202-
{:ok, models}
203-
{:ok, params} -> to_model(module, params)
204-
{:error, error} -> {:error, error}
205-
end
192+
{:ok, body}
193+
end
194+
195+
defp decode(%Tesla.Env{body: response}, module) when is_list(response) do
196+
models = Enum.map(response, fn params ->
197+
{:ok, model} = to_model(module, params)
198+
model
199+
end)
200+
{:ok, models}
201+
end
202+
defp decode(%Tesla.Env{body: params}, module) do
203+
to_model(module, params)
206204
end
207205

208206
defp to_model(module, params) do

0 commit comments

Comments
 (0)