Support for the comments endpoint

This commit is contained in:
xray7224 2013-09-02 19:25:24 +01:00 committed by Jessica Tallon
parent 37f070b067
commit 98596dd072
3 changed files with 39 additions and 4 deletions

View 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

View 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"
)

View 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