lib/ex_teal/api/plugin_responder.ex
defmodule ExTeal.Api.PluginResponder do
@moduledoc """
Simple Plug that routes a request to the
appropriate plugin
"""
alias ExTeal.Api.ErrorSerializer
def init(opts), do: opts
def call(conn, _opts) do
case ExTeal.plugin_for(conn.params["uri"]) do
{:ok, plugin} ->
router = plugin.router()
router.call(conn, router.init())
{:error, reason} ->
ErrorSerializer.handle_error(conn, reason)
end
end
end