1 changed files with 24 additions and 22 deletions
|
|
@ -25,29 +25,31 @@ defmodule MvWeb.MemberExportController do
|
||||||
@custom_field_prefix Mv.Constants.custom_field_prefix()
|
@custom_field_prefix Mv.Constants.custom_field_prefix()
|
||||||
|
|
||||||
def export(conn, params) do
|
def export(conn, params) do
|
||||||
actor = current_actor(conn)
|
case current_actor(conn) do
|
||||||
if is_nil(actor), do: return_forbidden(conn)
|
nil -> return_forbidden(conn)
|
||||||
|
actor -> export_with_actor(conn, actor, params["payload"])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
case params["payload"] do
|
defp export_with_actor(conn, actor, payload) when is_binary(payload) do
|
||||||
nil ->
|
|
||||||
conn
|
|
||||||
|> put_status(400)
|
|
||||||
|> put_resp_content_type("application/json")
|
|
||||||
|> json(%{error: "payload required"})
|
|
||||||
|
|
||||||
payload when is_binary(payload) ->
|
|
||||||
case Jason.decode(payload) do
|
case Jason.decode(payload) do
|
||||||
{:ok, decoded} when is_map(decoded) ->
|
{:ok, decoded} when is_map(decoded) ->
|
||||||
parsed = parse_and_validate(decoded)
|
run_export(conn, actor, parse_and_validate(decoded))
|
||||||
run_export(conn, actor, parsed)
|
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
|
json_error(conn, "invalid JSON")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp export_with_actor(conn, _actor, _payload) do
|
||||||
|
json_error(conn, "payload required")
|
||||||
|
end
|
||||||
|
|
||||||
|
defp json_error(conn, message) do
|
||||||
conn
|
conn
|
||||||
|> put_status(400)
|
|> put_status(400)
|
||||||
|> put_resp_content_type("application/json")
|
|> put_resp_content_type("application/json")
|
||||||
|> json(%{error: "invalid JSON"})
|
|> json(%{error: message})
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
defp current_actor(conn) do
|
defp current_actor(conn) do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue