aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-03-22 14:45:17 +0100
committerRoger Braun <roger@rogerbraun.net>2017-03-22 14:45:17 +0100
commit569d9bac178f22e763afc9db5000415bebf70304 (patch)
tree01eb181baad22e7a6c7611214cc7f2f3a4c84cea /lib
parent2db28df4cffa2ef43a84ac68caee6cef24cce19b (diff)
downloadpleroma-569d9bac178f22e763afc9db5000415bebf70304.tar.gz
Add fetching for recipients.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex16
-rw-r--r--lib/pleroma/web/router.ex1
2 files changed, 15 insertions, 2 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 5e4f3bbf5..121c46c51 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -8,14 +8,26 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
end
def fetch_public_activities(opts \\ %{}) do
+ public = ["https://www.w3.org/ns/activitystreams#Public"]
+ fetch_activities(public, opts)
+ end
+
+ def fetch_activities(recipients, opts \\ %{}) do
since_id = opts["since_id"] || 0
query = from activity in Activity,
- where: fragment(~s(? @> '{"to": ["https://www.w3.org/ns/activitystreams#Public"]}'), activity.data),
- where: activity.id > ^since_id,
limit: 20,
order_by: [desc: :inserted_at]
+ query = Enum.reduce(recipients, query, fn (recipient, q) ->
+ map = %{ to: [recipient] }
+ from activity in q,
+ or_where: fragment(~s(? @> ?), activity.data, ^map)
+ end)
+
+ query = from activity in query,
+ where: activity.id > ^since_id
+
Repo.all(query)
|> Enum.reverse
end
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index 0440af8c1..aa2f7865e 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -22,6 +22,7 @@ defmodule Pleroma.Web.Router do
scope "/api", Pleroma.Web do
pipe_through :api
get "/statuses/public_timeline.json", TwitterAPI.Controller, :public_timeline
+ get "/statuses/public_and_external_timeline.json", TwitterAPI.Controller, :public_timeline
end
scope "/api", Pleroma.Web do