summaryrefslogtreecommitdiff
path: root/session.py
diff options
context:
space:
mode:
Diffstat (limited to 'session.py')
-rw-r--r--session.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/session.py b/session.py
new file mode 100644
index 0000000..9928992
--- /dev/null
+++ b/session.py
@@ -0,0 +1,19 @@
+import Cookie, hashlib, time
+
+class Session(object):
+ def __init__(self, func):
+ self.func = func
+
+ def __call__(self, app, environ, start_response, path):
+ cookie = Cookie.SimpleCookie(environ['HTTP_COOKIE'] if 'HTTP_COOKIE' in environ else None)
+ sessionid = cookie.get('sessionid')
+ if not sessionid:
+ sessionid = hashlib.sha1(str(time.time) + environ['REMOTE_ADDR']).hexdigest()
+ cookie['sessionid'] = sessionid
+ start_response('302 Found', [
+ ('Set-Cookie', cookie['sessionid'].OutputString()),
+ ('Location', environ['REQUEST_URI'])])
+ return []
+ environ['sessionid'] = sessionid.value
+
+ return self.func(app, environ, start_response, path)