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