Skip to content
Snippets Groups Projects
Verified Commit 3db92351 authored by Sergey Suprunenko's avatar Sergey Suprunenko
Browse files

Ignore dates in wrong formats

parent b6f9f7b8
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,8 @@ defmodule Pleroma.Web.CommonAPI.Utils do
alias Pleroma.Web.Endpoint
alias Pleroma.Web.MediaProxy
require Logger
# This is a hack for twidere.
def get_by_id_or_ap_id(id) do
activity =
......@@ -240,28 +242,19 @@ defmodule Pleroma.Web.CommonAPI.Utils do
Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y")
end
def date_to_asctime(date) when is_float(date) do
date
|> trunc()
|> date_to_asctime()
end
def date_to_asctime(date) when is_integer(date) do
with {:ok, date} <- DateTime.from_unix(date) do
def date_to_asctime(date) when is_binary(date) do
with {:ok, date, _offset} <- DateTime.from_iso8601(date) do
format_asctime(date)
else
_e ->
Logger.warn("Date #{date} in wrong format, must be ISO 8601")
""
end
end
def date_to_asctime(date) do
with {:ok, date, _offset} <- DateTime.from_iso8601(date) do
format_asctime(date)
else
_e ->
""
end
Logger.warn("Date #{date} in wrong format, must be ISO 8601")
""
end
def to_masto_date(%NaiveDateTime{} = date) do
......
......@@ -155,39 +155,38 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do
end
describe "formats date to asctime" do
test "when date is an integer Unix timestamp" do
date = DateTime.utc_now() |> DateTime.to_unix()
test "when date is in ISO 8601 format" do
date = DateTime.utc_now() |> DateTime.to_iso8601()
expected =
date
|> DateTime.from_unix!()
|> DateTime.from_iso8601()
|> elem(1)
|> Calendar.Strftime.strftime!("%a %b %d %H:%M:%S %z %Y")
assert Utils.date_to_asctime(date) == expected
end
test "when date is a float Unix timestamp" do
date = 1_553_808_404.602961
test "when date is a binary in wrong format" do
date = DateTime.utc_now()
expected =
date
|> trunc()
|> DateTime.from_unix!()
|> Calendar.Strftime.strftime!("%a %b %d %H:%M:%S %z %Y")
expected = ""
assert Utils.date_to_asctime(date) == expected
end
test "when date is in ISO 8601 format" do
date = DateTime.utc_now() |> DateTime.to_iso8601()
test "when date is a Unix timestamp" do
date = DateTime.utc_now() |> DateTime.to_unix()
expected =
date
|> DateTime.from_iso8601()
|> elem(1)
|> Calendar.Strftime.strftime!("%a %b %d %H:%M:%S %z %Y")
expected = ""
assert Utils.date_to_asctime(date) == expected
end
test "when date is nil" do
expected = ""
assert Utils.date_to_asctime(nil) == expected
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment