diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/handlers.py b/api/handlers.py new file mode 100644 index 0000000..2c59d2d --- /dev/null +++ b/api/handlers.py @@ -0,0 +1,31 @@ +from piston.handler import AnonymousBaseHandler, BaseHandler +from piston.utils import rc + +from snipts.models import Snipt + + +class AnonSniptHandler(AnonymousBaseHandler): + model = Snipt + fields = ('title',) + + def read(self, request, snipt_id): + return super(self.read) + +class SniptHandler(BaseHandler): + allowed_methods = ('GET',) + anonymous = AnonSniptHandler + exclude = ('id',) + model = Snipt + + def read(self, request, snipt_id): + """ + Returns an individual public or private snipt. + """ + + if snipt_id: + try: + return Snipt.objects.get(pk=snipt_id, public=True) + except Snipt.DoesNotExist: + return rc.NOT_FOUND + else: + return rc.BAD_REQUEST diff --git a/api/urls.py b/api/urls.py new file mode 100644 index 0000000..b215780 --- /dev/null +++ b/api/urls.py @@ -0,0 +1,17 @@ +from django.conf.urls.defaults import * + +from piston.emitters import Emitter +from piston.resource import Resource + +from api.handlers import SniptHandler + + +Emitter.unregister('django') +Emitter.unregister('pickle') +Emitter.unregister('yaml') + +snipt_handler = Resource(SniptHandler) + +urlpatterns = patterns('', + url(r'^snipt/(?P\d+)/', snipt_handler), +) diff --git a/requirements.txt b/requirements.txt index 2d4ab08..9fb7907 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,6 +13,9 @@ -e git+http://github.com/benoitc/gunicorn.git#egg=gunicorn -e hg+ssh://hg@bitbucket.org/nicksergeant/dwfab#egg=dwfab +# API +-e hg+ssh://hg@bitbucket.org/jespern/django-piston#egg=django-piston + BeautifulSoup django-taggit django-postmark diff --git a/settings.py b/settings.py index 3bc72ff..06cf927 100644 --- a/settings.py +++ b/settings.py @@ -60,6 +60,7 @@ INSTALLED_APPS = ( 'compressor', 'django_bcrypt', + 'piston', 'south', 'taggit', diff --git a/urls.py b/urls.py index d1362f5..a2b4797 100644 --- a/urls.py +++ b/urls.py @@ -14,5 +14,7 @@ urlpatterns = patterns('', url(r'^404/$', direct_to_template, {'template': '404.html'}), url(r'^500/$', direct_to_template, {'template': '500.html'}), + url(r'^api/', include('api.urls')), + url(r'^$', home), )