Ignore dates in wrong formats

This commit is contained in:
Sergey Suprunenko 2019-04-02 11:25:51 +02:00
parent b6f9f7b8aa
commit 3db9235150
No known key found for this signature in database
GPG key ID: 5DCA7D1BE3914F9C
2 changed files with 29 additions and 37 deletions

View file

@ -15,6 +15,8 @@ defmodule Pleroma.Web.CommonAPI.Utils do
alias Pleroma.Web.Endpoint alias Pleroma.Web.Endpoint
alias Pleroma.Web.MediaProxy alias Pleroma.Web.MediaProxy
require Logger
# This is a hack for twidere. # This is a hack for twidere.
def get_by_id_or_ap_id(id) do def get_by_id_or_ap_id(id) do
activity = activity =
@ -240,29 +242,20 @@ def format_asctime(date) do
Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y") Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y")
end end
def date_to_asctime(date) when is_float(date) do def date_to_asctime(date) when is_binary(date) do
date with {:ok, date, _offset} <- DateTime.from_iso8601(date) do
|> trunc()
|> date_to_asctime()
end
def date_to_asctime(date) when is_integer(date) do
with {:ok, date} <- DateTime.from_unix(date) do
format_asctime(date) format_asctime(date)
else else
_e -> _e ->
Logger.warn("Date #{date} in wrong format, must be ISO 8601")
"" ""
end end
end end
def date_to_asctime(date) do def date_to_asctime(date) do
with {:ok, date, _offset} <- DateTime.from_iso8601(date) do Logger.warn("Date #{date} in wrong format, must be ISO 8601")
format_asctime(date)
else
_e ->
"" ""
end end
end
def to_masto_date(%NaiveDateTime{} = date) do def to_masto_date(%NaiveDateTime{} = date) do
date date

View file

@ -155,29 +155,6 @@ test "returns an existing mapping for an existing object" do
end end
describe "formats date to asctime" do describe "formats date to asctime" do
test "when date is an integer Unix timestamp" do
date = DateTime.utc_now() |> DateTime.to_unix()
expected =
date
|> DateTime.from_unix!()
|> 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
expected =
date
|> trunc()
|> DateTime.from_unix!()
|> Calendar.Strftime.strftime!("%a %b %d %H:%M:%S %z %Y")
assert Utils.date_to_asctime(date) == expected
end
test "when date is in ISO 8601 format" do test "when date is in ISO 8601 format" do
date = DateTime.utc_now() |> DateTime.to_iso8601() date = DateTime.utc_now() |> DateTime.to_iso8601()
@ -189,5 +166,27 @@ test "when date is in ISO 8601 format" do
assert Utils.date_to_asctime(date) == expected assert Utils.date_to_asctime(date) == expected
end end
test "when date is a binary in wrong format" do
date = DateTime.utc_now()
expected = ""
assert Utils.date_to_asctime(date) == expected
end
test "when date is a Unix timestamp" do
date = DateTime.utc_now() |> DateTime.to_unix()
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
end end