aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex7
-rw-r--r--test/web/mastodon_api/mastodon_api_controller_test.exs23
2 files changed, 30 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 35536a1e4..9af0f553c 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -159,6 +159,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
end
defp restrict_favorited_by(query, _), do: query
+ defp restrict_media(query, %{"only_media" => val}) when val == "true" or val == "1" do
+ from activity in query,
+ where: fragment("not (? #> '{\"object\",\"attachment\"}' = ?)", activity.data, ^[])
+ end
+ defp restrict_media(query, _), do: query
+
# Only search through last 100_000 activities by default
defp restrict_recent(query, %{"whole_db" => true}), do: query
defp restrict_recent(query, _) do
@@ -191,6 +197,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|> restrict_favorited_by(opts)
|> restrict_recent(opts)
|> restrict_blocked(opts)
+ |> restrict_media(opts)
|> Repo.all
|> Enum.reverse
end
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs
index 25d92d010..a00a11f8b 100644
--- a/test/web/mastodon_api/mastodon_api_controller_test.exs
+++ b/test/web/mastodon_api/mastodon_api_controller_test.exs
@@ -249,6 +249,29 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert id == to_string(note_two.id)
end
+
+ test "gets an users media", %{conn: conn} do
+ note = insert(:note_activity)
+ user = User.get_by_ap_id(note.data["actor"])
+
+ file = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"}
+ media = TwitterAPI.upload(file, "json")
+ |> Poison.decode!
+
+ {:ok, image_post} = TwitterAPI.create_status(user, %{"status" => "cofe", "media_ids" => [media["media_id"]]})
+
+ conn = conn
+ |> get("/api/v1/accounts/#{user.id}/statuses", %{"only_media" => "true"})
+
+ assert [%{"id" => id}] = json_response(conn, 200)
+ assert id == to_string(image_post.id)
+
+ conn = build_conn()
+ |> get("/api/v1/accounts/#{user.id}/statuses", %{"only_media" => "1"})
+
+ assert [%{"id" => id}] = json_response(conn, 200)
+ assert id == to_string(image_post.id)
+ end
end
describe "user relationships" do