From 00c032783d12d19529944d7f17123418e02ce1a5 Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Mon, 5 Jun 2017 15:47:37 +0200 Subject: [PATCH] Fix NaN statuses per day. --- .../representers/activity_representer.ex | 9 --------- .../twitter_api/representers/base_representer.ex | 13 +++++++++++++ .../twitter_api/representers/user_representer.ex | 2 ++ .../representers/user_representer_test.exs | 5 +++++ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/web/twitter_api/representers/activity_representer.ex b/lib/pleroma/web/twitter_api/representers/activity_representer.ex index 0303739f5..ade200268 100644 --- a/lib/pleroma/web/twitter_api/representers/activity_representer.ex +++ b/lib/pleroma/web/twitter_api/representers/activity_representer.ex @@ -2,7 +2,6 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do use Pleroma.Web.TwitterAPI.Representers.BaseRepresenter alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ObjectRepresenter} alias Pleroma.{Activity, User, Formatter} - alias Calendar.Strftime alias Pleroma.Web.TwitterAPI.TwitterAPI defp user_by_ap_id(user_list, ap_id) do @@ -130,14 +129,6 @@ def conversation_id(activity) do end end - defp date_to_asctime(date) do - with {:ok, date, _offset} <- date |> DateTime.from_iso8601 do - Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y") - else _e -> - "" - end - end - defp to_boolean(false) do false end diff --git a/lib/pleroma/web/twitter_api/representers/base_representer.ex b/lib/pleroma/web/twitter_api/representers/base_representer.ex index a4ef245fc..f13a54412 100644 --- a/lib/pleroma/web/twitter_api/representers/base_representer.ex +++ b/lib/pleroma/web/twitter_api/representers/base_representer.ex @@ -1,6 +1,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.BaseRepresenter do defmacro __using__(_opts) do quote do + alias Calendar.Strftime def to_json(object) do to_json(object, %{}) end def to_json(object, options) do object @@ -23,6 +24,18 @@ def enum_to_json(enum, options) do |> enum_to_list(options) |> Poison.encode! end + + def format_asctime(date) do + Strftime.strftime!(date, "%a %b %d %H:%M:%S %z %Y") + end + + def date_to_asctime(date) do + with {:ok, date, _offset} <- date |> DateTime.from_iso8601 do + format_asctime(date) + else _e -> + "" + end + end end end end diff --git a/lib/pleroma/web/twitter_api/representers/user_representer.ex b/lib/pleroma/web/twitter_api/representers/user_representer.ex index 493077413..8a7bb6f0d 100644 --- a/lib/pleroma/web/twitter_api/representers/user_representer.ex +++ b/lib/pleroma/web/twitter_api/representers/user_representer.ex @@ -12,6 +12,7 @@ def to_map(user, opts) do end user_info = User.get_cached_user_info(user) + created_at = user.inserted_at |> DateTime.from_naive!("Etc/UTC") |> format_asctime map = %{ "id" => user.id, @@ -19,6 +20,7 @@ def to_map(user, opts) do "screen_name" => user.nickname, "description" => user.bio, "following" => following, + "created_at" => created_at, # Fake fields "favourites_count" => 0, "statuses_count" => user_info[:note_count], diff --git a/test/web/twitter_api/representers/user_representer_test.exs b/test/web/twitter_api/representers/user_representer_test.exs index 77f065948..d63f738a9 100644 --- a/test/web/twitter_api/representers/user_representer_test.exs +++ b/test/web/twitter_api/representers/user_representer_test.exs @@ -33,11 +33,14 @@ test "A user" do image = "https://placehold.it/48x48" + created_at = user.inserted_at |> DateTime.from_naive!("Etc/UTC") |> UserRepresenter.format_asctime + represented = %{ "id" => user.id, "name" => user.name, "screen_name" => user.nickname, "description" => user.bio, + "created_at" => created_at, # Fake fields "favourites_count" => 0, "statuses_count" => 1, @@ -58,11 +61,13 @@ test "A user" do test "A user for a given other follower", %{user: user} do {:ok, follower} = UserBuilder.insert(%{following: [User.ap_followers(user)]}) image = "https://placehold.it/48x48" + created_at = user.inserted_at |> DateTime.from_naive!("Etc/UTC") |> UserRepresenter.format_asctime represented = %{ "id" => user.id, "name" => user.name, "screen_name" => user.nickname, "description" => user.bio, + "created_at" => created_at, # Fake fields "favourites_count" => 0, "statuses_count" => 0,