From 64c2de9aa54043ccbf8bc84b20e2ae161800d9e8 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Mon, 15 May 2023 18:43:15 +0200 Subject: [PATCH] Make EncodeJson/DecodeJson middlewares public --- lib/tesla/middleware/json.ex | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/tesla/middleware/json.ex b/lib/tesla/middleware/json.ex index 81ad1edb..61095b93 100644 --- a/lib/tesla/middleware/json.ex +++ b/lib/tesla/middleware/json.ex @@ -12,6 +12,9 @@ defmodule Tesla.Middleware.JSON do mix deps.compile tesla ``` + If you only need to encode the request body or decode the response body, + you can use `Tesla.Middleware.EncodeJson` or `Tesla.Middleware.DecodeJson` directly instead. + ## Examples ``` @@ -61,6 +64,7 @@ defmodule Tesla.Middleware.JSON do It is used by `Tesla.Middleware.EncodeJson`. """ + @spec encode(Tesla.Env.t(), keyword()) :: Tesla.Env.result() def encode(env, opts) do with true <- encodable?(env), {:ok, body} <- encode_body(env.body, opts) do @@ -98,6 +102,7 @@ defmodule Tesla.Middleware.JSON do It is used by `Tesla.Middleware.DecodeJson`. """ + @spec decode(Tesla.Env.t(), keyword()) :: Tesla.Env.result() def decode(env, opts) do with true <- decodable?(env, opts), {:ok, body} <- decode_body(env.body, opts) do @@ -151,7 +156,15 @@ defmodule Tesla.Middleware.JSON do end defmodule Tesla.Middleware.DecodeJson do - @moduledoc false + @moduledoc """ + Decodes response body as JSON. + + Only decodes the body if the `Content-Type` header suggests + that the body is JSON. + """ + @moduledoc since: "1.8.0" + + @impl Tesla.Middleware def call(env, next, opts) do opts = opts || [] @@ -162,7 +175,12 @@ defmodule Tesla.Middleware.DecodeJson do end defmodule Tesla.Middleware.EncodeJson do - @moduledoc false + @moduledoc """ + Encodes request body as JSON. + """ + @moduledoc since: "1.8.0" + + @impl Tesla.Middleware def call(env, next, opts) do opts = opts || []