Current section
7 Versions
Jump to
Current section
7 Versions
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 |