X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/53196495bbc0038b5c3c0a6e7171efe887e32964..a89df185c654948f1c146972270aaccf2d982d38:/apps/api/urls.py diff --git a/apps/api/urls.py b/apps/api/urls.py index a2e3197ef..e9b106cdc 100644 --- a/apps/api/urls.py +++ b/apps/api/urls.py @@ -1,19 +1,18 @@ # -*- coding: utf-8 -*- -from django.conf.urls.defaults import * +# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# +from django.conf.urls import patterns, url from django.views.decorators.csrf import csrf_exempt from django.views.generic import TemplateView -from piston.authentication import OAuthAuthentication, oauth_access_token +from piston.authentication import OAuthAuthentication, oauth_access_token from piston.resource import Resource - +from ssify import ssi_included from api import handlers from api.helpers import CsrfExemptResource auth = OAuthAuthentication(realm="Wolne Lektury") -book_changes_resource = Resource(handler=handlers.BookChangesHandler) -tag_changes_resource = Resource(handler=handlers.TagChangesHandler) -changes_resource = Resource(handler=handlers.ChangesHandler) - book_list_resource = CsrfExemptResource(handler=handlers.BooksHandler, authentication=auth) ebook_list_resource = Resource(handler=handlers.EBooksHandler) #book_list_resource = Resource(handler=handlers.BooksHandler) @@ -30,6 +29,21 @@ fragment_list_resource = Resource(handler=handlers.FragmentsHandler) picture_resource = CsrfExemptResource(handler=handlers.PictureHandler, authentication=auth) + +@ssi_included +def incl(request, model, pk, emitter_format): + resource = { + 'book': book_list_resource, + 'fragment': fragment_list_resource, + 'tag': tag_list_resource, + }[model] + resp = resource(request, pk=pk, emitter_format=emitter_format) + if emitter_format == 'xml': + # Ugly, but quick way of stripping header and tags. + resp.content = resp.content[49:-11] + return resp + + urlpatterns = patterns( 'piston.authentication', url(r'^oauth/request_token/$', 'oauth_request_token'), @@ -38,19 +52,13 @@ urlpatterns = patterns( ) + patterns('', url(r'^$', TemplateView.as_view(template_name='api/main.html'), name='api'), - - - # changes handlers - url(r'^book_changes/(?P\d*?)\.(?Pxml|json|yaml)$', book_changes_resource), - url(r'^tag_changes/(?P\d*?)\.(?Pxml|json|yaml)$', tag_changes_resource), - # used by mobile app - url(r'^changes/(?P\d*?)\.(?Pxml|json|yaml)$', changes_resource), + url(r'^include/(?Pbook|fragment|tag)/(?P\d+)\.(?P.+)\.(?Pxml|json)$', + incl, name='api_include'), # info boxes (used by mobile app) url(r'book/(?P\d*?)/info\.html$', 'catalogue.views.book_info'), url(r'tag/(?P\d*?)/info\.html$', 'catalogue.views.tag_info'), - # books by collections url(r'^collections/$', collection_list_resource, name="api_collections"), url(r'^collections/(?P[^/]+)/$', collection_resource, name="api_collection"),