X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/40a38822c70cb40ccda6770fe81d74624ecaecd7..0e79f07515678e3e678c3637124a27cb81ee8a94:/apps/api/urls.py diff --git a/apps/api/urls.py b/apps/api/urls.py index 8a1451909..1c2e656d1 100644 --- a/apps/api/urls.py +++ b/apps/api/urls.py @@ -1,24 +1,26 @@ # -*- 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) book_resource = Resource(handler=handlers.BookDetailHandler) +collection_resource = Resource(handler=handlers.CollectionDetailHandler) +collection_list_resource = Resource(handler=handlers.CollectionsHandler) + tag_list_resource = Resource(handler=handlers.TagsHandler) tag_resource = Resource(handler=handlers.TagDetailHandler) @@ -27,6 +29,22 @@ 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] + request.piwik_track = False + 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'), @@ -35,18 +53,16 @@ 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"), # objects details url(r'^books/(?P[a-z0-9-]+)/$', book_resource, name="api_book"),