← Wszystkie zadaniaNode.js · Junior

Parsowanie nagłówka Cookie

Przeglądarka wysyła ciasteczka jednym nagłówkiem: Cookie: session=abc123; theme=dark. Napisz parseCookies(header), które zwraca obiekt { session: "abc123", theme: "dark" }.

Spacje wokół nazw i wartości są usuwane, wartości dekodowane przez decodeURIComponent (zepsuta wartość zostaje bez zmian), a cudzysłowy wokół wartości zdejmowane. Części bez = są pomijane, a gdy ciasteczko się powtarza, wygrywa pierwsze. Pusty lub brakujący nagłówek daje {}.

Testy (6)

  1. expect(parseCookies('session=abc123; theme=dark')).toEqual({ session: 'abc123', theme: 'dark' });
  2. expect(parseCookies('name=John%20Doe; city=Kyiv')).toEqual({ name: 'John Doe', city: 'Kyiv' });
  3. expect(parseCookies(undefined)).toEqual({});
    expect(parseCookies('')).toEqual({});
  4. expect(parseCookies('a=1;  b = 2 ;broken; c=')).toEqual({ a: '1', b: '2', c: '' });
  5. expect(parseCookies('id=1; id=2')).toEqual({ id: '1' });
  6. expect(parseCookies('token="x y"; bad=%E0%A4%A')).toEqual({ token: 'x y', bad: '%E0%A4%A' });