Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions clients/gax/lib/google_api/gax/connection.ex
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ defmodule GoogleApi.Gax.Connection do
)
)

plug(Tesla.Middleware.DecompressResponse, [])
plug(Tesla.Middleware.DecompressResponse, max_body_size: :infinity)

plug(Tesla.Middleware.EncodeJson, engine: Poison)

Expand Down Expand Up @@ -182,7 +182,7 @@ defmodule GoogleApi.Gax.Connection do
nil -> body
_ -> Tesla.Multipart.add_field(
body,
:metadata,
"metadata",
Poison.encode!(meta),
headers: [{:"Content-Type", "application/json"}]
)
Expand All @@ -193,7 +193,7 @@ defmodule GoogleApi.Gax.Connection do
{res, type} = try_encode_multipart_field(data, meta)
Tesla.Multipart.add_field(
b,
body_name,
to_string(body_name),
res,
headers: [{:"Content-Type", type}]
)
Expand Down
1 change: 0 additions & 1 deletion clients/gax/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ defmodule GoogleApi.Gax.MixProject do
defp deps() do
[
{:tesla, "~> 1.2"},
{:mime, "~> 1.0"},
{:poison, ">= 3.0.0 and < 5.0.0"},
{:ex_doc, "~> 0.16", only: :dev},
{:dialyxir, "~> 0.5", only: [:dev], runtime: false}
Expand Down
4 changes: 2 additions & 2 deletions clients/gax/test/gax/api_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ defmodule Gax.ApiTest do
mock(fn %{
method: :get,
url: "https://example.com/v1/stores/store-1/pets",
headers: [{"x-goog-api-client", ^api_client}]
headers: [{"x-goog-api-client", ^api_client}, {"accept-encoding", "gzip, deflate, identity"}]
} ->
%Tesla.Env{status: 200, body: @pets_json}
end)
Expand All @@ -61,7 +61,7 @@ defmodule Gax.ApiTest do
mock(fn %{
method: :get,
url: "https://example.com/v1/stores/store-1/pets",
headers: [{"x-goog-api-client", ^api_client}]
headers: [{"x-goog-api-client", ^api_client}, {"accept-encoding", "gzip, deflate, identity"}]
} ->
%Tesla.Env{status: 200, body: @pets_json_compressed,
headers: [{"content-encoding", "gzip"}]}
Expand Down
18 changes: 18 additions & 0 deletions clients/gax/test/gax/connection_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,24 @@ defmodule Gax.ConnectionTest do
end)
end

# Regression test for tesla >= 1.18.3 compatibility: Tesla.Multipart.add_field/4
# now requires binary field names and raises on atoms, so build_body/3 must
# stringify the metadata key and every body param name.
test "multipart field names are strings, not atoms" do
request =
Request.new()
|> Request.add_param(:body, :metadata, %{foo: "bar"})
|> Request.add_param(:body, :data, %{baz: "qux"})
|> Connection.build_request()

body = %Tesla.Multipart{} = Keyword.get(request, :body)
names = Enum.map(body.parts, fn part -> Keyword.get(part.dispositions, :name) end)

assert Enum.all?(names, &is_binary/1)
assert "metadata" in names
assert "data" in names
end

test "creates api client header without library version" do
request =
Request.new()
Expand Down