Packages
stripity_stripe
2.0.0-alpha.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 false
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