summaryrefslogtreecommitdiffstats
path: root/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'api.py')
-rw-r--r--api.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/api.py b/api.py
index 4bdcd27..1f934c5 100644
--- a/api.py
+++ b/api.py
@@ -6,6 +6,7 @@ from django.http import HttpResponseNotModified, HttpResponse
from lib import mongo
import pymongo
import json
+import re
connection = pymongo.Connection('localhost', 27017)
@@ -36,3 +37,31 @@ class ThreadResource(View):
return HttpResponse(status=404)
else:
return thread
+
+
+class SearchResource(View):
+ """ Resource used to search the archives using the REST API.
+ """
+
+ def get(self, request, mlist_fqdn, field, keyword):
+ list_name = mlist_fqdn.split('@')[0]
+
+ if field not in ['Subject', 'Content', 'SubjectContent', 'From']:
+ return HttpResponse(status=404)
+
+ regex = '.*%s.*' % keyword
+ if field == 'SubjectContent':
+ query_string = {'$or' : [
+ {'Subject': re.compile(regex, re.IGNORECASE)},
+ {'Content': re.compile(regex, re.IGNORECASE)}
+ ]}
+ else:
+ query_string = {field.capitalize():
+ re.compile(regex, re.IGNORECASE)}
+
+ print query_string, field, keyword
+ threads = mongo.search_archives(list_name, query_string)
+ if not threads:
+ return HttpResponse(status=404)
+ else:
+ return threads