Add user timeline
[akkoma] / lib / pleroma / web / twitter_api / twitter_api.ex
index 0d9a491dafaf98b052318854878242c26613dd34..0641200312e86f02b31bf34919f47c4f1f68c79d 100644 (file)
@@ -25,7 +25,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
 
     content_html = add_user_links(content, mentions)
 
-    date = make_date
+    date = make_date()
 
     activity = %{
       "type" => "Create",
@@ -69,7 +69,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   end
 
   def fetch_friend_statuses(user, opts \\ %{}) do
-    ActivityPub.fetch_activities(user.following, opts)
+    ActivityPub.fetch_activities([user.ap_id | user.following], opts)
     |> activities_to_statuses(%{for: user})
   end
 
@@ -78,6 +78,12 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
     |> activities_to_statuses(%{for: user})
   end
 
+  def fetch_user_statuses(user, opts \\ %{}) do
+    target = get_user(user, opts)
+    ActivityPub.fetch_activities([], Map.merge(opts, %{"actor_id" => target.ap_id}))
+    |> activities_to_statuses(%{for: user})
+  end
+
   def fetch_conversation(user, id) do
     query = from activity in Activity,
       where: fragment("? @> ?", activity.data, ^%{ statusnetConversationId: id}),
@@ -108,7 +114,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
            "type" => "Follow",
            "actor" => follower.ap_id,
            "object" => followed.ap_id,
-           "published" => make_date
+           "published" => make_date()
          })
     do
       { :ok, follower, followed, activity }
@@ -188,4 +194,15 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   defp make_date do
     DateTime.utc_now() |> DateTime.to_iso8601
   end
+
+  defp get_user(user, params) do
+    case params do
+      %{ "user_id" => user_id } ->
+        Repo.get(User, user_id)
+      %{ "screen_name" => nickname } ->
+        Repo.get_by!(User, nickname: nickname)
+      _ ->
+        user
+    end
+  end
 end