@t2ee/cookieman
Version:
t2ee cookie middleware
64 lines • 2.68 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments)).next());
});
};
const Cookie_1 = require("./Cookie");
const Redis = require("redis");
class MemoryStore {
constructor(uri, prefix) {
this.prefix = prefix;
this.redis = Redis.createClient(uri);
}
get(key) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
this.redis.get(this.prefix + key, (err, result) => {
if (err)
return reject(err);
const cookie = new Cookie_1.default();
const data = JSON.parse(result);
if (!data)
return resolve(cookie);
cookie.key = data.key;
cookie.expires = new Date(data.expires);
cookie.data = data.data;
cookie.path = data.path;
cookie.domain = data.domain;
cookie.secure = data.secure ? true : false;
cookie.httpOnly = data.httpOnly ? true : false;
resolve(cookie);
});
});
});
}
set(cookie) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
this.redis.setex(this.prefix + cookie.key, Math.round((cookie.expires.getTime() - Date.now()) / 1000), JSON.stringify(cookie), err => {
if (err)
return reject(err);
resolve();
});
});
});
}
remove(cookie) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
this.redis.del(this.prefix + cookie.key, err => {
if (err)
return reject(err);
resolve();
});
});
});
}
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = MemoryStore;
//# sourceMappingURL=RedisStore.js.map