2020-01-26 21:36:50 +01:00
|
|
|
defmodule Mobilizon.Web.ErrorView do
|
2018-01-14 17:56:50 +01:00
|
|
|
@moduledoc """
|
|
|
|
View for errors
|
|
|
|
"""
|
2020-01-26 21:36:50 +01:00
|
|
|
use Mobilizon.Web, :view
|
2020-06-09 16:08:03 +02:00
|
|
|
alias Mobilizon.Service.Metadata.Instance
|
2020-06-18 15:23:05 +02:00
|
|
|
import Mobilizon.Web.Views.Utils
|
2017-12-08 09:58:14 +01:00
|
|
|
|
2020-06-18 15:23:05 +02:00
|
|
|
def render("404.html", %{conn: conn}) do
|
2021-03-09 19:39:54 +01:00
|
|
|
with tags <- Instance.build_tags(),
|
|
|
|
{:ok, html} <- inject_tags(tags, get_locale(conn)) do
|
|
|
|
html
|
|
|
|
else
|
|
|
|
{:error, error} ->
|
|
|
|
return_error(conn, error)
|
|
|
|
end
|
2017-12-08 09:58:14 +01:00
|
|
|
end
|
|
|
|
|
2019-05-02 13:04:21 +02:00
|
|
|
def render("404.json", _assigns) do
|
|
|
|
%{msg: "Resource not found"}
|
|
|
|
end
|
|
|
|
|
2019-09-18 17:32:37 +02:00
|
|
|
def render("404.activity-json", _assigns) do
|
|
|
|
%{msg: "Resource not found"}
|
|
|
|
end
|
|
|
|
|
|
|
|
def render("404.ics", _assigns) do
|
|
|
|
"Bad feed"
|
|
|
|
end
|
|
|
|
|
|
|
|
def render("404.atom", _assigns) do
|
|
|
|
"Bad feed"
|
|
|
|
end
|
|
|
|
|
2018-01-21 19:43:16 +01:00
|
|
|
def render("invalid_request.json", _assigns) do
|
|
|
|
%{errors: "Invalid request"}
|
|
|
|
end
|
|
|
|
|
2018-08-03 10:16:22 +02:00
|
|
|
def render("not_found.json", %{details: details}) do
|
|
|
|
%{
|
|
|
|
msg: "Resource not found",
|
2018-08-03 10:19:28 +02:00
|
|
|
details: details
|
2018-08-03 10:16:22 +02:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
2021-04-21 10:47:32 +02:00
|
|
|
def render("406.json", _assigns) do
|
|
|
|
%{msg: "Not acceptable"}
|
|
|
|
end
|
|
|
|
|
2021-04-21 18:57:23 +02:00
|
|
|
def render("500.json", assigns) do
|
|
|
|
render("500.html", assigns)
|
|
|
|
end
|
|
|
|
|
2021-04-23 09:26:16 +02:00
|
|
|
def render("500.activity-json", assigns) do
|
|
|
|
render("500.html", assigns)
|
|
|
|
end
|
|
|
|
|
2021-03-09 19:39:54 +01:00
|
|
|
def render("500.html", assigns) do
|
2021-07-21 15:46:04 +02:00
|
|
|
locale =
|
|
|
|
Mobilizon.Config.instance_config()
|
|
|
|
|> Keyword.get(:default_language, "en")
|
|
|
|
|
|
|
|
Gettext.put_locale(locale)
|
2020-10-09 12:17:33 +02:00
|
|
|
|
2021-03-09 19:39:54 +01:00
|
|
|
assigns =
|
|
|
|
assigns
|
|
|
|
|> Map.update(:details, [], & &1)
|
|
|
|
|> Map.put(:instance, Mobilizon.Config.instance_name())
|
|
|
|
|> Map.put(:contact, Mobilizon.Config.contact())
|
2021-07-21 15:46:04 +02:00
|
|
|
|> Map.put(:locale, locale)
|
2021-03-09 19:39:54 +01:00
|
|
|
|
|
|
|
render("500_page.html", assigns)
|
2017-12-08 09:58:14 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
# In case no render clause matches or no
|
|
|
|
# template is found, let's render it as 500
|
2019-03-05 10:13:19 +01:00
|
|
|
def template_not_found(template, assigns) do
|
|
|
|
require Logger
|
2019-09-18 17:32:37 +02:00
|
|
|
Logger.warn("Template #{inspect(template)} not found")
|
2018-07-27 10:45:35 +02:00
|
|
|
render("500.html", assigns)
|
2017-12-08 09:58:14 +01:00
|
|
|
end
|
|
|
|
end
|