aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/federation/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/federation/views.py')
-rw-r--r--mediagoblin/federation/views.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/mediagoblin/federation/views.py b/mediagoblin/federation/views.py
index 40873cea..69dee7fb 100644
--- a/mediagoblin/federation/views.py
+++ b/mediagoblin/federation/views.py
@@ -210,7 +210,7 @@ def inbox_major_endpoint(request):
@oauth_required
@csrf_exempt
-def feed_endpoint(request):
+def feed_endpoint(request, outbox=None):
""" Handles the user's outbox - /api/user/<username>/feed """
username = request.matchdict["username"]
requested_user = User.query.filter_by(username=username).first()
@@ -524,7 +524,10 @@ def feed_endpoint(request):
}
# Create outbox
- outbox = Activity.query.filter_by(actor=request.user.id)
+ if outbox is None:
+ outbox = Activity.query.filter_by(actor=request.user.id)
+ else:
+ outbox = outbox.filter_by(actor=request.user.id)
# We want the newest things at the top (issue: #1055)
outbox = outbox.order_by(Activity.published.desc())
@@ -550,6 +553,28 @@ def feed_endpoint(request):
return json_response(feed)
@oauth_required
+def feed_minor_endpoint(request):
+ """ Outbox for minor activities such as updates """
+ # If it's anything but GET pass it along
+ if request.method != "GET":
+ return feed_endpoint(request)
+
+ outbox = Activity.query.filter(
+ (Activity.verb == "update") | (Activity.verb == "delete")
+ )
+ return feed_endpoint(request, outbox=outbox)
+
+@oauth_required
+def feed_major_endpoint(request):
+ """ Outbox for all major activities """
+ # If it's anything but a GET pass it along
+ if request.method != "GET":
+ return feed_endpoint(request)
+
+ outbox = Activity.query.filter_by(verb="post")
+ return feed_endpoint(request, outbox=outbox)
+
+@oauth_required
def object_endpoint(request):
""" Lookup for a object type """
object_type = request.matchdict["object_type"]