Support for the comments endpoint
authorxray7224 <jessica@megworld.co.uk>
Mon, 2 Sep 2013 18:25:24 +0000 (19:25 +0100)
committerJessica Tallon <jessica@megworld.co.uk>
Tue, 22 Jul 2014 22:13:14 +0000 (23:13 +0100)
mediagoblin/db/models.py
mediagoblin/federation/routing.py
mediagoblin/federation/views.py

index 91efc0b649140014060bfb4a2da20c8ad55ce0d4..4377f60f870cc1d7f33d2dc164a19e7ab697f56f 100644 (file)
@@ -455,7 +455,9 @@ class MediaEntry(Base, MediaEntryMixin):
             },
             "fullImage":{
                 "url": request.host_url + self.original_url[1:],
-            }
+            },
+            "published": self.created.isoformat(),
+            "updated": self.created.isoformat(),
         }
 
         if show_comments:
@@ -465,7 +467,13 @@ class MediaEntry(Base, MediaEntryMixin):
                 # we only want to include replies if there are any.
                 context["replies"] = {
                     "totalItems": total,
-                    "items": comments
+                    "items": comments,
+                    "url": request.urlgen(
+                            "mediagoblin.federation.object.comments",
+                            objectType=self.objectType,
+                            uuid=self.slug,
+                            qualified=True
+                            ),
                 }
 
         return context 
index 9c870588770495c85ae631d870767b4bfdac4314..16184866bdd9e5c18f843c299790703d67b2bca0 100644 (file)
@@ -48,3 +48,8 @@ add_route(
     "/api/<string:objectType>/<string:uuid>",
     "mediagoblin.federation.views:object"
     )
+add_route(
+    "mediagoblin.federation.object.comments",
+    "/api/<string:objectType>/<string:uuid>/comments",
+    "mediagoblin.federation.views:object_comments"
+    )
index 0108294282e5d15a5815b66b3b48654b832e7839..ab67e4574814edbcf9210f97f7b1b67b8dc1fc29 100644 (file)
@@ -39,8 +39,8 @@ def inbox(request):
     """ Handles the user's inbox - /api/user/<username>/inbox """
     raise NotImplemented("Yet to implement looking up user's inbox")
 
-@oauth_required
-def object(request):
+#@oauth_required
+def object(request, raw_obj=False):
     """ Lookup for a object type """
     objectType = request.matchdict["objectType"]
     uuid = request.matchdict["uuid"]
@@ -55,4 +55,26 @@ def object(request):
         error = "Can't find a {0} with ID = {1}".format(objectType, uuid)
         return json_response({"error": error}, status=404)
 
+    if raw_obj:
+        return media
+
     return json_response(media.serialize(request))
+
+def object_comments(request):
+    """ Looks up for the comments on a object """
+    media = object(request, raw_obj=True)
+    response = media
+    if isinstance(response, MediaEntry):
+        comments = response.serialize(request)
+        comments = comments.get("replies", {
+                "totalItems": 0,
+                "items": [],
+                "url": request.urlgen(
+                    "mediagoblin.federation.object.comments",
+                    objectType=media.objectType,
+                    uuid=media.slug,
+                    qualified=True)
+                })
+        response = json_response(comments)
+
+    return response