MastoAPI: Fix date in account view.
authorRoger Braun <rbraun@Bobble.local>
Fri, 15 Sep 2017 15:50:47 +0000 (17:50 +0200)
committerRoger Braun <rbraun@Bobble.local>
Fri, 15 Sep 2017 15:50:47 +0000 (17:50 +0200)
lib/pleroma/web/common_api/utils.ex
lib/pleroma/web/mastodon_api/views/account_view.ex
lib/pleroma/web/mastodon_api/views/status_view.ex
test/web/mastodon_api/account_view_test.exs

index 0d8b39d70022548f1dae5e768b0265397deb38e2..b649ee188dca8fa16e70c439f6152df4b03c321b 100644 (file)
@@ -119,6 +119,23 @@ defmodule Pleroma.Web.CommonAPI.Utils 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
index f2fa49cb519a9edcab26c621133597ed1b8e9bcc..68d930a68c1f0040f35e2bc0ec90a07234f746d8 100644 (file)
@@ -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 @@ defmodule Pleroma.Web.MastodonAPI.AccountView 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,
index 550ecb74f6f11e82dec90450504cda45539061eb..11a435ca08628fa3325cfe61ce5c3017633ca4a7 100644 (file)
@@ -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 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
 
     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"])
index c8f33f98c24efd549e81e7c0813da80dea963542..8a7727369a3588144181a485f079e0c5d9749f75 100644 (file)
@@ -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 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest 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,