match_slash=False
)
+add_route(
+ "mediagoblin.federation.feed_major",
+ "/api/user/<string:username>/feed/major/",
+ "mediagoblin.federation.views:feed_major_endpoint",
+ match_slash=False
+)
+
+add_route(
+ "mediagoblin.federation.feed_minor",
+ "/api/user/<string:username>/feed/minor/",
+ "mediagoblin.federation.views:feed_minor_endpoint",
+ match_slash=False
+)
+
add_route(
"mediagoblin.federation.user.uploads",
"/api/user/<string:username>/uploads/",
add_route(
"mediagoblin.federation.inbox_direct_minor",
- "/api/user/<string:username>/inbox/direct/minor",
+ "/api/user/<string:username>/inbox/direct/minor/",
"mediagoblin.federation.views:inbox_minor_endpoint",
match_slash=False
)
add_route(
"mediagoblin.federation.inbox_direct_major",
- "/api/user/<string:username>/inbox/direct/major",
+ "/api/user/<string:username>/inbox/direct/major/",
"mediagoblin.federation.views:inbox_major_endpoint",
match_slash=False
)
@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()
}
# 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())
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 """