-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathvanilla.py
81 lines (60 loc) · 1.97 KB
/
vanilla.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
73
74
75
76
77
78
79
80
81
import json
import eventlet
import eventlet.db_pool
import datetime
import redis
def sendJsonWsgiResponse(env,start_response,response,additionalHeaders=None):
headers = [('Content-Type','text/json')]
headers.append(('Cache-Control','no-store, no-cache, must-revalidate, max-age=0'))
headers.append(('Pragma','no-cache'))
if additionalHeaders:
headers += additionalHeaders
start_response('200 OK',headers)
class DateTimeJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime.datetime):
return obj.isoformat()
else:
return super(DateTimeJSONEncoder, self).default(obj)
return [DateTimeJSONEncoder().encode(response)]
def http_error(num,env,start_response,msg=None):
if num < 400 or num > 599:
raise ValueError("HTTP Error code out of range:" + str(num))
start_response(str(num),[('Content-Type','text/html')])
if env.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest':
response = json.dumps({'msg': msg})
else:
errmsg = 'Error - ' +str(num)
response = '<html><head><title>'
response += errmsg
response += '</title></head>'
response += '<body><h4>'
response += errmsg
response += '</h4><hr><p id="msg">'
if msg:
response += msg
response += '</p></body></html>'
return [response]
def getContentLength(env):
if 'CONTENT_LENGTH' not in env:
return None
try:
cl = int(env['CONTENT_LENGTH'])
except ValueError:
return None
return cl
def buildRedisConnectionPool(**redisKwArgs):
conn = redis.StrictRedis(**redisKwArgs)
return conn.connection_pool
def buildConnectionPool(dbModule,**dbKwArgs):
dbKwArgs['max_idle'] = 10
dbKwArgs['max_age'] = 1200
dbKwArgs['connect_timeout']=3
dbKwArgs['max_size']=4
return eventlet.db_pool.ConnectionPool(dbModule,**dbKwArgs)
def sanitizeForContentDispositionHeaderFilename(originalFileName):
result = str(originalFileName).replace(' ','_')
prohibited = '<>\"/:|?*!@#$%^&()[]{},'
for c in prohibited:
result = result.replace(c,'')
return result