Current section

7 Versions

Jump to

Compare versions

3 files changed
+17 additions
-4 deletions
  @@ -18,4 +18,4 @@
18 18 [{<<"app">>,<<"poison">>},
19 19 {<<"optional">>,false},
20 20 {<<"requirement">>,<<">= 1.5.0">>}]}]}.
21 - {<<"version">>,<<"1.1.1">>}.
21 + {<<"version">>,<<"1.2.0">>}.
  @@ -8,21 +8,34 @@ defmodule Trello.Http do
8 8 end
9 9
10 10 defp decode_body(body) do
11 - with {:ok, data} <- Poison.decode(body), do: atomize_keys(data)
11 + with {:ok, data} <- Poison.decode(body), do: snake_keys(data) |> atomize_keys
12 + end
13 +
14 + defp snake_keys(data) when is_map(data) do
15 + for {key, val} <- data, into: %{} do
16 + key_name = Macro.underscore key
17 +
18 + {key_name, snake_keys(val)}
19 + end
12 20 end
13 21
14 22 defp atomize_keys(data) when is_map(data) do
15 23 for {key, val} <- data, into: %{} do
16 - key_name = String.to_atom(key)
24 + key_name = String.to_atom key
17 25
18 26 {key_name, atomize_keys(val)}
19 27 end
20 28 end
21 29
30 + defp snake_keys(data) when is_list(data) do
31 + for item <- data, into: [], do: snake_keys(item)
32 + end
33 +
22 34 defp atomize_keys(data) when is_list(data) do
23 35 for item <- data, into: [], do: atomize_keys(item)
24 36 end
25 37
26 38 defp atomize_keys(data), do: data
39 + defp snake_keys(data), do: data
27 40 defp is_json(string), do: Regex.match?(~r/^({|\[).*(}|\])$/, string)
28 41 end
  @@ -1,7 +1,7 @@
1 1 defmodule TrelloElixir.Mixfile do
2 2 use Mix.Project
3 3
4 - @version "1.1.1"
4 + @version "1.2.0"
5 5 @elixir_version "~> 1.2"
6 6
7 7 def project do