const ePrototype = require("application-prototype/constructors/extensions/prototype");
const Cookies = require('./../../../resources/thirdparty/cookies');
/**
* @class
* @name SGAppsServerRequestCookie
*/
/**
* @memberof SGAppsServerRequestCookie#
* @method get
* @param {string} name
* @param {object} [options]
* @param {boolean} [options.secure=false]
* @returns {string}
*/
/**
* @memberof SGAppsServerRequestCookie#
* @method set
* @param {string} name
* @param {string} value
* @param {object} [options]
* @param {boolean} [options.secure=false]
* @param {boolean} [options.secureProxy]
* @param {boolean} [options.signed]
* @param {string} [options.path="/"]
* @param {Date} [options.expires]
* @param {string} [options.domain]
* @param {boolean} [options.httpOnly=true]
* @param {boolean} [options.sameSite=false]
* @param {boolean} [options.secure=false]
* @param {boolean} [options.overwrite=false]
* @param {boolean} [skipErrors=false]
* @returns {string}
*/
;
/**
* @private
* @method RequestCookieDecorator
* @param {SGAppsServerRequest} request
* @param {SGAppsServerResponse} response
* @param {SGAppsServer} server
* @param {function} callback
*/
module.exports = function RequestCookieDecorator(request, response, server, callback) {
if (request === null || response === null) {
/**
* @memberof SGAppsServer#
* @var {object} CookiesManager
* @property {string} COOKIES_KEY
* @property {boolean} [_enabled=true] if is changed to false server will not decorate requests with cookie manager
* @property {function (SGAppsServerRequest,SGAppsServerResponse):object} handle
*/
server.CookiesManager = {
COOKIES_KEY: 'your secret key',
_enabled: true,
handle: (request, response) => {
return new Cookies(request.request, response.response, {
keys: [server.CookiesManager.COOKIES_KEY]
});
}
};
callback();
return;
}
if (!server.CookiesManager._enabled) {
callback();
return;
}
/**
* @memberof SGAppsServerRequest#
* @name cookies
* @type {SGAppsServerRequestCookie}
*/;
//@ts-ignore
request.cookies = new Cookies(request.request, response.response, {
keys: [server.CookiesManager.COOKIES_KEY]
});
// response._destroy.push(() => {
// delete request.cookies;
// });
callback();
};