Packages
ex_aws
2.7.0
2.7.0
2.6.1
2.6.0
2.5.11
2.5.10
2.5.9
2.5.8
2.5.7
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.10
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.1.9
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.1
1.0.0-beta3
1.0.0-beta2
1.0.0-beta1
1.0.0-beta0
0.5.0
0.4.19
0.4.18
0.4.17
0.4.15
0.4.14
0.4.13
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
0.0.5
0.0.4
0.0.3
AWS client for Elixir. Currently supports Dynamo, DynamoStreams, EC2, Firehose, Kinesis, KMS, Lambda, RRDS, Route53, S3, SES, SNS, SQS, STS and others.
Current section
Files
Jump to
Current section
Files
lib/ex_aws/request/req.ex
if Code.ensure_loaded?(Req) do
defmodule ExAws.Request.Req do
@behaviour ExAws.Request.HttpClient
@moduledoc """
Configuration for `m:Req`.
Options can be set for `m:Req` with the following config:
config :ex_aws, :req_opts,
receive_timeout: 30_000
The default config handles setting the above.
"""
@default_opts [receive_timeout: 30_000]
@impl true
def request(method, url, body \\ "", headers \\ [], http_opts \\ []) do
http_opts = http_opts |> rename_follow_redirect() |> rename_recv_timeout()
[method: method, url: url, body: body, headers: headers, decode_body: false, retry: false]
|> Keyword.merge(Application.get_env(:ex_aws, :req_opts, @default_opts))
|> Keyword.merge(http_opts)
|> Req.request()
|> case do
{:ok, resp} ->
{:ok, %{status_code: resp.status, headers: Req.get_headers_list(resp), body: resp.body}}
{:error, reason} ->
{:error, %{reason: reason}}
end
end
# Req >= 0.4.0 uses :redirect, but some clients pass the :hackney option
# :follow_redirect. Rename the option for Req to use.
defp rename_follow_redirect(opts) do
{follow, opts} = Keyword.pop(opts, :follow_redirect, false)
Keyword.put(opts, :redirect, follow)
end
# Rename :recv_timeout to :receive_timeout for Req to use.
defp rename_recv_timeout(opts) do
{recv_timeout, opts} = Keyword.pop(opts, :recv_timeout, 30_000)
Keyword.put(opts, :receive_timeout, recv_timeout)
end
end
end