use a global cookie jar instead of specifying the cookie jar every time
This commit is contained in:
		@@ -2,28 +2,14 @@ import fetch from "./fetch";
 | 
			
		||||
import CookieJar from "./cookie-jar";
 | 
			
		||||
import Cookie from "./cookie";
 | 
			
		||||
 | 
			
		||||
async function cookieFetch(cookieJars, url, options) {
 | 
			
		||||
const cookieJar = new CookieJar("rw");
 | 
			
		||||
 | 
			
		||||
export default async function cookieFetch(url, options) {
 | 
			
		||||
    let cookies = "";
 | 
			
		||||
    if(cookieJars) {
 | 
			
		||||
        if(Array.isArray(cookieJars) && cookieJars.every(c => c instanceof CookieJar)) {
 | 
			
		||||
            cookieJars.forEach(jar => {
 | 
			
		||||
                if(!jar.flags.includes("r"))
 | 
			
		||||
                    return;
 | 
			
		||||
                jar.forEach(c => {
 | 
			
		||||
                    if(c.isValidForRequest(url))
 | 
			
		||||
                        cookies += c.serialize() + "; ";
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        else if(cookieJars instanceof CookieJar && cookieJars.flags.includes("r")) {
 | 
			
		||||
            cookieJars.forEach(c => {
 | 
			
		||||
                if(c.isValidForRequest(url))
 | 
			
		||||
                    cookies += c.serialize() + "; ";
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            throw new TypeError("First paramter is neither a cookie jar nor an array of cookie jars!");
 | 
			
		||||
    }
 | 
			
		||||
    cookieJar.forEach(c => {
 | 
			
		||||
        if(c.isValidForRequest(url))
 | 
			
		||||
            cookies += c.serialize() + "; ";
 | 
			
		||||
    });
 | 
			
		||||
    if(cookies.length !== 0) {
 | 
			
		||||
        if(!options) {
 | 
			
		||||
            options = {
 | 
			
		||||
@@ -35,20 +21,8 @@ async function cookieFetch(cookieJars, url, options) {
 | 
			
		||||
        options.headers.cookie = cookies.slice(0, -2);
 | 
			
		||||
    }
 | 
			
		||||
    const result = await fetch(url, options);
 | 
			
		||||
    cookies = result.headers["set-cookie"]);
 | 
			
		||||
    if(cookies && cookieJars) {
 | 
			
		||||
        if(Array.isArray(cookieJars)) {
 | 
			
		||||
            cookieJars.forEach(jar => {
 | 
			
		||||
                if(!jar.flags.includes("w"))
 | 
			
		||||
                    return;
 | 
			
		||||
                cookies.forEach(c => jar.addCookie(c, url));
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        else if(cookieJars.flags.includes("w")) {
 | 
			
		||||
            cookies.forEach(c => cookieJars.addCookie(c, url));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    cookies = result.headers["set-cookie"];
 | 
			
		||||
    if(cookies)
 | 
			
		||||
        cookies.forEach(c => cookieJar.addCookie(c, url));
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export {cookieFetch as fetch, CookieJar, Cookie};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user