flumm-fetch-cookies/src/index.mjs
2019-11-29 02:40:09 +01:00

33 lines
818 B
JavaScript

import _fetch from "flumm-fetch";
import CookieJar from "./cookie-jar.mjs";
import Cookie from "./cookie.mjs";
const cookieJar = new CookieJar();
export default async function fetch(url, options) {
let cookies = "";
[...cookieJar.cookiesValidForRequest(url)]
.forEach(c => cookies += c.serialize() + "; ");
if(cookies) {
if(!options)
options = {};
if(!options.headers)
options.headers = {};
options.headers.cookie = cookies.slice(0, -2);
}
const result = await _fetch(url, options);
cookies = result.headers["set-cookie"] || [];
cookies.forEach(c => cookieJar.addCookie(c, url));
// delete expired cookies after each request
cookieJar.deleteExpired(false);
return result;
}
export {cookieJar, CookieJar, Cookie};