-
Notifications
You must be signed in to change notification settings - Fork 0
/
document_utils.py
72 lines (59 loc) · 2.42 KB
/
document_utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import json
import dbm # Used for easy database creation
from cgi import escape # Used for URL data parsing
from models import Document
from utils import check_post_data
from user_utils import check_credentials
def get_doc(environ, start_response):
"""Get Document for a given doc_id
(and user credentials - username and key)"""
args = environ['app.url_args']
if args:
doc_id = escape(args[0])
username = escape(args[1])
key = escape(args[2])
if check_credentials(username, key):
doc_db = dbm.open('doc', 'c')
if doc_id in doc_db.keys():
start_response('200 OK',
[('Content-Type', 'application/json')])
json_doc = {'doc_id': doc_id, 'doc_text': doc_db[doc_id]}
return [json.dumps(json_doc)]
else:
json_doc = {'status': False,
'message': 'Document does not exist.'}
else:
json_doc = {'status': False, 'message': 'Missing data in request.'}
start_response('400 BAD DATA', [('Content-Type', 'application/json')])
return [json.dumps(json_doc)]
def create_doc(environ, start_response):
"""Create a Document with a given doc_id and doc_text
(and user credentials - username and key)"""
size = check_post_data(environ, start_response)
if size:
data = environ['wsgi.input'].read(size)
data = json.loads(data)
try:
doc_id = data['doc_id']
doc_text = data['doc_text']
username = data['username']
key = data['key']
if check_credentials(username, key):
doc = Document()
start_response('200 OK',
[('Content-Type', 'application/json')])
json_doc = doc.create(doc_id=doc_id, doc_text=doc_text)
return [json.dumps(json_doc)]
else:
raise KeyError
except KeyError:
start_response('400 BAD DATA',
[('Content-Type', 'application/json')])
json_doc = {'status': False,
'message': 'Missing data.'}
return [json.dumps(json_doc)]
else:
start_response('400 BAD DATA', [('Content-Type', 'application/json')])
json_doc = {'status': False,
'message': 'Missing data.'}
return [json.dumps(json_doc)]