Skip to content

Instantly share code, notes, and snippets.

@bcardarella
Created August 5, 2015 02:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bcardarella/339c107f9705a41c6084 to your computer and use it in GitHub Desktop.
Save bcardarella/339c107f9705a41c6084 to your computer and use it in GitHub Desktop.
defmodule SogApi.Deserialize do
def init(options) do
options
end
def call(%Plug.Conn{params: %{"format" => "json-api"}, method: "POST"}=conn, _opts) do
result = _deserialize(conn)
end
def call(%Plug.Conn{params: %{"format" => "json-api"}, method: "PUT"}=conn, _opts) do
_deserialize(conn)
end
def call(%Plug.Conn{params: %{"format" => "json-api"}, method: "PATCH"}=conn, _opts) do
_deserialize(conn)
end
def call(conn, _opts), do: conn
defp _deserialize(%Plug.Conn{}=conn) do
Map.put(conn, :params, _deserialize(conn.params))
end
defp _deserialize(%{}=params) do
Enum.into(params, %{}, fn({key, value}) -> { _underscore(key), _deserialize(value) } end)
end
defp _deserialize(value), do: value
defp _underscore(key), do: String.replace(key, "-", "_")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment