Add user timelines to Masto Api.
authorRoger Braun <roger@rogerbraun.net>
Sun, 10 Sep 2017 15:46:43 +0000 (17:46 +0200)
committerRoger Braun <roger@rogerbraun.net>
Sun, 10 Sep 2017 15:49:13 +0000 (17:49 +0200)
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/router.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 1aa7f43ab0d6cadc4a6c0731051de320be6ab1f7..16ee434c6443ae849422e1f9ca93602f66388610 100644 (file)
@@ -1,6 +1,6 @@
 defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   use Pleroma.Web, :controller
-  alias Pleroma.{Repo, Activity}
+  alias Pleroma.{Repo, Activity, User}
   alias Pleroma.Web.OAuth.App
   alias Pleroma.Web
   alias Pleroma.Web.MastodonAPI.{StatusView, AccountView}
@@ -55,6 +55,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     render conn, StatusView, "index.json", %{activities: activities, for: user, as: :activity}
   end
 
+  def user_statuses(%{assigns: %{user: user}} = conn, params) do
+    with %User{ap_id: ap_id} <- Repo.get(User, params["id"]) do
+      params = params
+      |> Map.put("type", "Create")
+      |> Map.put("actor_id", ap_id)
+
+      activities = ActivityPub.fetch_activities([], params)
+      |> Enum.reverse
+
+      render conn, StatusView, "index.json", %{activities: activities, for: user, as: :activity}
+    end
+  end
+
   def get_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do
     with %Activity{} = activity <- Repo.get(Activity, id) do
       render conn, StatusView, "status.json", %{activity: activity, for: user}
index 5246b3c415ed45aebbfdde50eb915c805b56ae28..9e725641dc045ced9475f96fc6caca881fc00e6e 100644 (file)
@@ -48,6 +48,8 @@ defmodule Pleroma.Web.Router do
 
     get "/statuses/:id", MastodonAPIController, :get_status
     get "/statuses/:id/context", MastodonAPIController, :get_context
+
+    get "/accounts/:id/statuses", MastodonAPIController, :user_statuses
   end
 
   scope "/api/v1", Pleroma.Web.MastodonAPI do
index dc925e2c8e769872d3ed126ec623b05e7965d79a..e87430d3fd0ca10b00897d36ea21262f983f4383 100644 (file)
@@ -165,4 +165,20 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       assert activity.id == id
     end
   end
+
+  describe "user timelines" do
+    test "gets a users statuses", %{conn: conn} do
+      _note = insert(:note_activity)
+      note_two = insert(:note_activity)
+
+      user = User.get_by_ap_id(note_two.data["actor"])
+
+      conn = conn
+      |> get("/api/v1/accounts/#{user.id}/statuses")
+
+      assert [%{"id" => id}] = json_response(conn, 200)
+
+      assert id == note_two.id
+    end
+  end
 end