Skip to content

Commit 27cc13e

Browse files
authored
fix: json decoder middleware for uppercase content type (#685)
closes #680
1 parent 92642fd commit 27cc13e

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

lib/tesla/middleware/json.ex

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,15 @@ defmodule Tesla.Middleware.JSON do
129129

130130
defp decodable_content_type?(env, opts) do
131131
case Tesla.get_header(env, "content-type") do
132-
nil -> false
133-
content_type -> Enum.any?(content_types(opts), &String.starts_with?(content_type, &1))
132+
nil ->
133+
false
134+
135+
content_type ->
136+
content_type = String.downcase(content_type)
137+
138+
opts
139+
|> content_types()
140+
|> Enum.any?(&String.starts_with?(content_type, &1))
134141
end
135142
end
136143

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ defmodule Tesla.Mixfile do
22
use Mix.Project
33

44
@source_url "https://github.com/teamon/tesla"
5-
@version "1.10.1"
5+
@version "1.10.2"
66

77
def project do
88
[

test/tesla/middleware/json_test.exs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ defmodule Tesla.Middleware.JsonTest do
1010
adapter fn env ->
1111
{status, headers, body} =
1212
case env.url do
13+
# GET https://testlajson.free.beeceptor.com/todos to see the response
14+
"/uppercased-content-type" ->
15+
{200, [{"content-type", "application/JSON"}], "{\"value\": 123}"}
16+
1317
"/decode" ->
1418
{200, [{"content-type", "application/json"}], "{\"value\": 123}"}
1519

@@ -48,6 +52,11 @@ defmodule Tesla.Middleware.JsonTest do
4852
end
4953
end
5054

55+
test "decoding json with insensitive content type" do
56+
assert {:ok, env} = Client.get("/uppercased-content-type")
57+
assert env.body == %{"value" => 123}
58+
end
59+
5160
test "decode JSON body" do
5261
assert {:ok, env} = Client.get("/decode")
5362
assert env.body == %{"value" => 123}

0 commit comments

Comments
 (0)