39 lines
1 KiB
Elixir
39 lines
1 KiB
Elixir
|
defmodule PlugMicropub.Response do
|
||
|
import Plug.Conn
|
||
|
|
||
|
def send_content(conn, content) do
|
||
|
json_encoder = conn.private[:plug_micropub][:json_encoder]
|
||
|
body = json_encoder.encode!(content)
|
||
|
|
||
|
conn
|
||
|
|> put_resp_content_type("application/json")
|
||
|
|> send_resp(:ok, body)
|
||
|
end
|
||
|
|
||
|
def send_error(conn, {:error, error}) do
|
||
|
body = %{error: error}
|
||
|
_send_error(conn, body)
|
||
|
end
|
||
|
|
||
|
def send_error(conn, {:error, error, description}) do
|
||
|
body = %{error: error, error_description: description}
|
||
|
_send_error(conn, body)
|
||
|
end
|
||
|
|
||
|
defp _send_error(conn, body) do
|
||
|
json_encoder = conn.private[:plug_micropub][:json_encoder]
|
||
|
|
||
|
code = get_error_code(body.error)
|
||
|
body = json_encoder.encode!(body)
|
||
|
|
||
|
conn
|
||
|
|> put_resp_content_type("application/json")
|
||
|
|> send_resp(code, body)
|
||
|
end
|
||
|
|
||
|
defp get_error_code(:insufficient_scope), do: :unauthorized
|
||
|
defp get_error_code(:invalid_request), do: :bad_request
|
||
|
defp get_error_code(:request_error), do: :internal_server_error
|
||
|
defp get_error_code(code), do: code
|
||
|
end
|