diff options
author | Jessica Tallon <xray7224@googlemail.com> | 2013-08-14 17:00:26 +0100 |
---|---|---|
committer | Jessica Tallon <jessica@megworld.co.uk> | 2014-07-22 23:13:14 +0100 |
commit | 5a2056f7386371bd84b9481380235bb0f06ca149 (patch) | |
tree | 44bd98b9e66611f7c4be789e94afc29cefe5ab5b /mediagoblin/federation | |
parent | 2b7b9de32e53d34635059afc571ac1a318e41071 (diff) | |
download | mediagoblin-5a2056f7386371bd84b9481380235bb0f06ca149.tar.lz mediagoblin-5a2056f7386371bd84b9481380235bb0f06ca149.tar.xz mediagoblin-5a2056f7386371bd84b9481380235bb0f06ca149.zip |
Adds endpoint /api/image/<uuid> so that you can now view an image endpoint
Diffstat (limited to 'mediagoblin/federation')
-rw-r--r-- | mediagoblin/federation/routing.py | 7 | ||||
-rw-r--r-- | mediagoblin/federation/views.py | 42 |
2 files changed, 46 insertions, 3 deletions
diff --git a/mediagoblin/federation/routing.py b/mediagoblin/federation/routing.py index 9c3e0dff..9c870588 100644 --- a/mediagoblin/federation/routing.py +++ b/mediagoblin/federation/routing.py @@ -41,3 +41,10 @@ add_route( "/api/user/<string:username>/inbox", "mediagoblin.federation.views:inbox" ) + +# object endpoints +add_route( + "mediagoblin.federation.object", + "/api/<string:objectType>/<string:uuid>", + "mediagoblin.federation.views:object" + ) diff --git a/mediagoblin/federation/views.py b/mediagoblin/federation/views.py index 337f28ed..de9084d0 100644 --- a/mediagoblin/federation/views.py +++ b/mediagoblin/federation/views.py @@ -1,5 +1,5 @@ from mediagoblin.decorators import oauth_required -from mediagoblin.db.models import User +from mediagoblin.db.models import User, MediaEntry from mediagoblin.tools.response import json_response @oauth_required @@ -37,6 +37,42 @@ def feed(request): @oauth_required def inbox(request): """ Handles the user's inbox - /api/user/<username>/inbox """ - pass - raise NotImplemented("Yet to implement looking up user's inbox") + +def image_object(request, media): + """ Return image object - /api/image/<uuid> """ + author = media.get_uploader + url = request.urlgen( + "mediagoblin.user_pages.media_home", + user=author.username, + media=media.slug, + qualified=True + ) + + context = { + "author": author.serialize(request), + "displayName": media.title, + "objectType": "image", + "url": url, + } + + return json_response(context) + +@oauth_required +def object(request): + """ Lookup for a object type """ + objectType = request.matchdict["objectType"] + uuid = request.matchdict["uuid"] + if objectType not in ["image"]: + error = "Unknown type: {0}".format(objectType) + # not sure why this is 404, maybe ask evan. Maybe 400? + return json_response({"error": error}, status=404) + + media = MediaEntry.query.filter_by(uuid=uuid).first() + if media is None: + # no media found with that uuid + error = "Can't find a {0} with ID = {1}".format(objectType, uuid) + return json_response({"error": error}, status=404) + + if objectType == "image": + return image_object(request, media) |