rsnext/examples/api-routes-middleware/utils/cookies.js
2019-07-15 17:39:16 +02:00

27 lines
686 B
JavaScript

import { serialize } from 'cookie'
/**
* This sets `cookie` on `res` object
*/
const cookie = (res, name, value, options = {}) => {
const stringValue =
typeof value === 'object' ? 'j:' + JSON.stringify(value) : String(value)
if ('maxAge' in options) {
options.expires = new Date(Date.now() + options.maxAge)
options.maxAge /= 1000
}
res.setHeader('Set-Cookie', serialize(name, String(stringValue), options))
}
/**
* Adds `cookie` function on `res.cookie` to set cookies for response
*/
const cookies = handler => (req, res) => {
res.cookie = (name, value, options) => cookie(res, name, value, options)
return handler(req, res)
}
export default cookies