Tizen 2.0 Release
[platform/framework/web/web-ui-fw.git] / libs / js / jquery-mobile-1.2.0 / node_modules / grunt / node_modules / connect / lib / middleware / session / store.js
1
2 /*!
3  * Connect - session - Store
4  * Copyright(c) 2010 Sencha Inc.
5  * Copyright(c) 2011 TJ Holowaychuk
6  * MIT Licensed
7  */
8
9 /**
10  * Module dependencies.
11  */
12
13 var EventEmitter = require('events').EventEmitter
14   , Session = require('./session')
15   , Cookie = require('./cookie')
16   , utils = require('../../utils');
17
18 /**
19  * Initialize abstract `Store`.
20  *
21  * @api private
22  */
23
24 var Store = module.exports = function Store(options){};
25
26 /**
27  * Inherit from `EventEmitter.prototype`.
28  */
29
30 Store.prototype.__proto__ = EventEmitter.prototype;
31
32 /**
33  * Re-generate the given requests's session.
34  *
35  * @param {IncomingRequest} req
36  * @return {Function} fn
37  * @api public
38  */
39
40 Store.prototype.regenerate = function(req, fn){
41   var self = this;
42   this.destroy(req.sessionID, function(err){
43     self.generate(req);
44     fn(err);
45   });
46 };
47
48 /**
49  * Load a `Session` instance via the given `sid`
50  * and invoke the callback `fn(err, sess)`.
51  *
52  * @param {String} sid
53  * @param {Function} fn
54  * @api public
55  */
56
57 Store.prototype.load = function(sid, fn){
58   var self = this;
59   this.get(sid, function(err, sess){
60     if (err) return fn(err);
61     if (!sess) return fn();
62     var req = { sessionID: sid, sessionStore: self };
63     sess = self.createSession(req, sess);
64     fn(null, sess);
65   });
66 };
67
68 /**
69  * Create session from JSON `sess` data.
70  *
71  * @param {IncomingRequest} req
72  * @param {Object} sess
73  * @return {Session}
74  * @api private
75  */
76
77 Store.prototype.createSession = function(req, sess){
78   var expires = sess.cookie.expires
79     , orig = sess.cookie.originalMaxAge
80     , update = null == update ? true : false;
81   sess.cookie = new Cookie(sess.cookie);
82   if ('string' == typeof expires) sess.cookie.expires = new Date(expires);
83   sess.cookie.originalMaxAge = orig;
84   req.session = new Session(req, sess);
85   return req.session;
86 };