diff options
author | Pierre-Yves Chibon <pingou@pingoured.fr> | 2012-03-28 20:46:43 +0200 |
---|---|---|
committer | Pierre-Yves Chibon <pingou@pingoured.fr> | 2012-03-28 20:46:43 +0200 |
commit | de36b45bc8b645456449c15bdd7950ce48e6b0db (patch) | |
tree | f158cb1307274acdd2a660e04784c47573000090 | |
parent | 26a3772b571398537affa10e7bb9cfbfdfb18c1c (diff) | |
download | hyperkitty-de36b45bc8b645456449c15bdd7950ce48e6b0db.tar.gz hyperkitty-de36b45bc8b645456449c15bdd7950ce48e6b0db.tar.xz hyperkitty-de36b45bc8b645456449c15bdd7950ce48e6b0db.zip |
Add first bits of a REST API relying on the django-rest-framework
-rw-r--r-- | api.py | 38 | ||||
-rw-r--r-- | settings.py | 1 | ||||
-rw-r--r-- | urls.py | 5 |
3 files changed, 44 insertions, 0 deletions
@@ -0,0 +1,38 @@ +# mongodb/api.py +from djangorestframework.views import View + +from django.conf.urls.defaults import url +from django.http import HttpResponseNotModified, HttpResponse +from lib import mongo +import pymongo +import json + +connection = pymongo.Connection('localhost', 27017) + + +class EmailResource(View): + """ Resource used to retrieve emails from the archives using the + REST API. + """ + + def get(self, request, mlist_fqdn, messageid): + list_name = mlist_fqdn.split('@')[0] + email = mongo.get_email(list_name, messageid) + if not email: + return HttpResponse(status=404) + else: + return email + + +class ThreadResource(View): + """ Resource used to retrieve threads from the archives using the + REST API. + """ + + def get(self, request, mlist_fqdn, threadid): + list_name = mlist_fqdn.split('@')[0] + thread = mongo.get_thread_list(list_name, threadid) + if not thread: + return HttpResponse(status=404) + else: + return thread diff --git a/settings.py b/settings.py index 181ebee..f5c54ad 100644 --- a/settings.py +++ b/settings.py @@ -130,6 +130,7 @@ INSTALLED_APPS = ( # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'mongodb', + 'djangorestframework', ) # A sample logging configuration. The only tangible logging @@ -1,5 +1,7 @@ from django.conf.urls.defaults import patterns, include, url from django.conf import settings +from api import EmailResource, ThreadResource +from tastypie.api import Api from django.contrib.staticfiles.urls import staticfiles_urlpatterns @@ -41,6 +43,9 @@ urlpatterns = patterns('', url(r'^mockup/search\/(?P<keyword>.*)$', 'views.mockup.search_keyword'), url(r'^mockup/tag\/(?P<tag>.*)$', 'views.mockup.search_tag'), + # REST API + url(r'^api/email\/(?P<mlist_fqdn>.*@.*)\/(?P<messageid>.*)/', EmailResource.as_view()), + url(r'^api/thread\/(?P<mlist_fqdn>.*@.*)\/(?P<threadid>.*)/', ThreadResource.as_view()), # Uncomment the admin/doc line below to enable admin documentation: # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), |