Skip to content

Instantly share code, notes, and snippets.

@danmcclain
Created November 19, 2015 22:54
Show Gist options
  • Select an option

  • Save danmcclain/b3ba06da0a73d7aee5d5 to your computer and use it in GitHub Desktop.

Select an option

Save danmcclain/b3ba06da0a73d7aee5d5 to your computer and use it in GitHub Desktop.

Revisions

  1. danmcclain created this gist Nov 19, 2015.
    25 changes: 25 additions & 0 deletions deserializer.ex
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    defmodule Logobase.Deserializer do
    def init(options) do
    options
    end

    def call(conn, _opts) do
    case Phoenix.Controller.get_format(conn) do
    "json-api" ->
    _deserialize(conn)
    _ ->
    conn
    end
    end

    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