From d659fcc1957600e7937af7e9a456af8bc452bbd8 Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Fri, 15 Sep 2017 17:50:47 +0200 Subject: [PATCH] MastoAPI: Fix date in account view. --- lib/pleroma/web/common_api/utils.ex | 17 +++++++++++++++++ .../web/mastodon_api/views/account_view.ex | 3 ++- .../web/mastodon_api/views/status_view.ex | 6 ++---- test/web/mastodon_api/account_view_test.exs | 4 ++-- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 0d8b39d70..b649ee188 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -119,6 +119,23 @@ def date_to_asctime(date) do end end + def to_masto_date(%NaiveDateTime{} = date) do + date + |> NaiveDateTime.to_iso8601 + |> String.replace(~r/(\.\d+)?$/, ".000Z", global: false) + end + + def to_masto_date(date) do + try do + date + |> NaiveDateTime.from_iso8601! + |> NaiveDateTime.to_iso8601 + |> String.replace(~r/(\.\d+)?$/, ".000Z", global: false) + rescue + _e -> "" + end + end + defp shortname(name) do if String.length(name) < 30 do name diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index f2fa49cb5..68d930a68 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -2,6 +2,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do use Pleroma.Web, :view alias Pleroma.User alias Pleroma.Web.MastodonAPI.AccountView + alias Pleroma.Web.CommonAPI.Utils defp image_url(%{"url" => [ %{ "href" => href } | t ]}), do: href defp image_url(_), do: nil @@ -22,7 +23,7 @@ def render("account.json", %{user: user}) do acct: user.nickname, display_name: user.name, locked: false, - created_at: user.inserted_at, + created_at: Utils.to_masto_date(user.inserted_at), followers_count: user_info.follower_count, following_count: user_info.following_count, statuses_count: user_info.note_count, diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 550ecb74f..11a435ca0 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -2,6 +2,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do use Pleroma.Web, :view alias Pleroma.Web.MastodonAPI.{AccountView, StatusView} alias Pleroma.{User, Activity} + alias Pleroma.Web.CommonAPI.Utils def render("index.json", opts) do render_many(opts.activities, StatusView, "status.json", opts) @@ -26,10 +27,7 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity} attachments = render_many(object["attachment"] || [], StatusView, "attachment.json", as: :attachment) - created_at = (object["published"] || "") - |> NaiveDateTime.from_iso8601! - |> NaiveDateTime.to_iso8601 - |> String.replace(~r/(\.\d+)?$/, ".000Z", global: false) + created_at = Utils.to_masto_date(object["published"]) # TODO: Add cached version. reply_to = Activity.get_create_activity_by_object_ap_id(object["inReplyTo"]) diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs index c8f33f98c..8a7727369 100644 --- a/test/web/mastodon_api/account_view_test.exs +++ b/test/web/mastodon_api/account_view_test.exs @@ -5,7 +5,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do alias Pleroma.User test "Represent a user account" do - user = insert(:user, %{info: %{"note_count" => 5, "follower_count" => 3}, nickname: "shp@shitposter.club"}) + user = insert(:user, %{info: %{"note_count" => 5, "follower_count" => 3}, nickname: "shp@shitposter.club", inserted_at: ~N[2017-08-15 15:47:06.597036]}) expected = %{ id: user.id, @@ -13,7 +13,7 @@ test "Represent a user account" do acct: user.nickname, display_name: user.name, locked: false, - created_at: user.inserted_at, + created_at: "2017-08-15T15:47:06.000Z", followers_count: 3, following_count: 0, statuses_count: 5,