Use actual ISO8601 timestamps for masto API #425

Merged
floatingghost merged 2 commits from darkkirb/akkoma:fix-invalid-datetime into develop 2023-01-09 22:12:29 +00:00
2 changed files with 9 additions and 9 deletions
Showing only changes of commit 8d55b8c6d9 - Show all commits

View file

@ -332,7 +332,7 @@ def to_masto_date(%NaiveDateTime{} = date) do
# It supports negative years for example. # It supports negative years for example.
# ISO8601 only supports years before 1583 with mutual agreement # ISO8601 only supports years before 1583 with mutual agreement
if date.year < 1583 do if date.year < 1583 do
"" "1970-01-01T00:00:00Z"
else else
date date
|> NaiveDateTime.to_iso8601() |> NaiveDateTime.to_iso8601()
@ -344,11 +344,11 @@ def to_masto_date(date) when is_binary(date) do
with {:ok, date} <- NaiveDateTime.from_iso8601(date) do with {:ok, date} <- NaiveDateTime.from_iso8601(date) do
to_masto_date(date) to_masto_date(date)
else else
_ -> "" _ -> "1970-01-01T00:00:00Z"
end end
end end
def to_masto_date(_), do: "" def to_masto_date(_), do: "1970-01-01T00:00:00Z"
defp shortname(name) do defp shortname(name) do
with max_length when max_length > 0 <- with max_length when max_length > 0 <-

View file

@ -495,16 +495,16 @@ test "removes microseconds from date (String)" do
assert Utils.to_masto_date("2015-01-23T23:50:07.123Z") == "2015-01-23T23:50:07.000Z" assert Utils.to_masto_date("2015-01-23T23:50:07.123Z") == "2015-01-23T23:50:07.000Z"
end end
test "returns empty string when date invalid" do test "returns unix epoch when date invalid" do
assert Utils.to_masto_date("2015-01?23T23:50:07.123Z") == "" assert Utils.to_masto_date("2015-01?23T23:50:07.123Z") == "1970-01-01T00:00:00Z"
end end
test "returns empty string when date is before the introduction of the Gregorian Calendar" do test "returns unix epoch when date is before the introduction of the Gregorian Calendar" do
assert Utils.to_masto_date("0621-01-01T00:00:00Z") == "" assert Utils.to_masto_date("0621-01-01T00:00:00Z") == "1970-01-01T00:00:00Z"
end end
test "returns empty string when date is BCE" do test "returns unix epoch when date is BCE" do
assert Utils.to_masto_date("-420-01-01T00:00:00Z") == "" assert Utils.to_masto_date("-0420-01-01T00:00:00Z") == "1970-01-01T00:00:00Z"
end end
end end