Нема описа
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728
  1. // Small HTTP helpers shared across the server.
  2. const now = () => Date.now();
  3. const json = (res, code, body) => {
  4. res.writeHead(code, { 'Content-Type': 'application/json' });
  5. res.end(JSON.stringify(body));
  6. };
  7. function readBody(req) {
  8. return new Promise((resolve) => {
  9. let data = '';
  10. req.on('data', (c) => (data += c));
  11. req.on('end', () => {
  12. try { resolve(data ? JSON.parse(data) : {}); } catch { resolve({}); }
  13. });
  14. });
  15. }
  16. function parseCookies(req) {
  17. const out = {};
  18. (req.headers.cookie || '').split(';').forEach((c) => {
  19. const [k, ...v] = c.trim().split('=');
  20. if (k) out[k] = decodeURIComponent(v.join('='));
  21. });
  22. return out;
  23. }
  24. module.exports = { now, json, readBody, parseCookies };