From 9a51bf1ebcee16169c7dc8ab950b23f7b4a06a22 Mon Sep 17 00:00:00 2001 From: Jessica Tallon Date: Mon, 15 Dec 2014 18:04:50 +0000 Subject: [PATCH] Fix #1064 - Add major and minor feed for outbox/feed --- mediagoblin/federation/routing.py | 18 ++++++++++++++++-- mediagoblin/federation/views.py | 29 +++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/mediagoblin/federation/routing.py b/mediagoblin/federation/routing.py index b585750b..6d86c10e 100644 --- a/mediagoblin/federation/routing.py +++ b/mediagoblin/federation/routing.py @@ -39,6 +39,20 @@ add_route( match_slash=False ) +add_route( + "mediagoblin.federation.feed_major", + "/api/user//feed/major/", + "mediagoblin.federation.views:feed_major_endpoint", + match_slash=False +) + +add_route( + "mediagoblin.federation.feed_minor", + "/api/user//feed/minor/", + "mediagoblin.federation.views:feed_minor_endpoint", + match_slash=False +) + add_route( "mediagoblin.federation.user.uploads", "/api/user//uploads/", @@ -76,14 +90,14 @@ add_route( add_route( "mediagoblin.federation.inbox_direct_minor", - "/api/user//inbox/direct/minor", + "/api/user//inbox/direct/minor/", "mediagoblin.federation.views:inbox_minor_endpoint", match_slash=False ) add_route( "mediagoblin.federation.inbox_direct_major", - "/api/user//inbox/direct/major", + "/api/user//inbox/direct/major/", "mediagoblin.federation.views:inbox_major_endpoint", match_slash=False ) 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//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()) @@ -549,6 +552,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 """