Current section
Files
Jump to
Current section
Files
lib/stripe/http_client/httpc.ex
defmodule Stripe.HTTPClient.HTTPC do
@moduledoc false
@behaviour Stripe.HTTPClient
@impl true
def init() do
{:ok, _} = Application.ensure_all_started(:inets)
:ok
end
@impl true
def request(:post = method, url, headers, body, opts) do
headers = for {k, v} <- headers, do: {String.to_charlist(k), String.to_charlist(v)}
request = {String.to_charlist(url), headers, ~C(application/x-www-form-urlencoded), body}
do_request(method, request, opts)
end
def request(method, url, headers, _body, opts) do
headers = for {k, v} <- headers, do: {String.to_charlist(k), String.to_charlist(v)}
request = {String.to_charlist(url), headers}
do_request(method, request, opts)
end
defp do_request(method, request, opts) do
case :httpc.request(method, request, opts, body_format: :binary) do
{:ok, {{_, status, _}, headers, body}} ->
headers = for {k, v} <- headers, do: {List.to_string(k), List.to_string(v)}
{:ok, %{status: status, headers: headers, body: body}}
{:error, error} ->
{:error, error}
end
end
end