Packages
stripity_stripe
1.6.2
3.3.2
3.3.1
3.2.0
3.1.1
3.1.0
3.0.0
2.17.3
2.17.2
2.17.1
2.17.0
2.16.0
2.15.1
2.15.0
2.14.1
2.14.0
2.13.0
2.12.1
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.2
2.7.1
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.3
2.2.2
2.2.1
2.2.0
2.1.0
2.0.1
2.0.0
2.0.0-alpha.11
2.0.0-alpha.10
2.0.0-alpha.9
2.0.0-alpha.8
2.0.0-alpha.7
2.0.0-alpha.6
2.0.0-alpha.5
2.0.0-alpha.4
2.0.0-alpha.3
2.0.0-alpha.2
2.0.0-alpha.1
1.6.2
1.6.1
1.6.0
1.4.0
1.3.0
1.2.0
1.1.0
0.5.0
0.4.0
0.3.0
0.2.0
A Stripe client for Elixir.
Current section
Files
Jump to
Current section
Files
lib/stripe/uri.ex
defmodule Stripe.URI do
@moduledoc """
Stripe URI helpers to encode nested dictionaries as query_params.
"""
defmacro __using__(_) do
quote do
defp build_url(ext \\ "") do
if ext != "", do: ext = "/" <> ext
@base <> ext
end
end
end
@doc """
Takes a map and turns it into proper query values.
## Example
card_data = %{
card: %{
number: 424242424242,
exp_year: 2014
}
}
Stripe.URI.encode_query(card) # card[number]=424242424242&card[exp_year]=2014
"""
def encode_query(list) do
Enum.map_join list, "&", fn x ->
pair(x)
end
end
defp pair({key, value}) do
cond do
Enumerable.impl_for(value) ->
pair(to_string(key), [], value)
true ->
param_name = key |> to_string |> URI.encode_www_form
param_value = value |> to_string |> URI.encode_www_form
"#{param_name}=#{param_value}"
end
end
defp pair(root, parents, values) do
Enum.map_join values, "&", fn {key, value} ->
cond do
Enumerable.impl_for(value) ->
pair(root, parents ++ [key], value)
true ->
build_key(root, parents ++ [key]) <> URI.encode_www_form(to_string(value))
end
end
end
defp build_key(root, parents) do
path = Enum.map_join parents, "", fn x ->
param = x |> to_string |> URI.encode_www_form
"[#{param}]"
end
"#{root}#{path}="
end
end