From 648f12a1eb628aae75205338244311f873a89b82 Mon Sep 17 00:00:00 2001 From: Etienne Prothon Date: Tue, 16 Jun 2020 00:23:55 +0200 Subject: [PATCH] fix typo and improve as asked --- src/index.mjs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/index.mjs b/src/index.mjs index b1b5087..6e63ab2 100644 --- a/src/index.mjs +++ b/src/index.mjs @@ -1,12 +1,12 @@ import _fetch from "node-fetch"; import CookieJar from "./cookie-jar.mjs"; import Cookie from "./cookie.mjs"; -import { paramError, CookieParseError } from "./errors.mjs" +import {paramError, CookieParseError} from "./errors.mjs"; const redirectStatus = new Set([301, 302, 303, 307, 308]); async function fetch(cookieJars, url, options) { - + let cookies = ""; const addValidFromJars = jars => { // since multiple cookie jars can be passed, filter duplicates by using a set of cookie names @@ -35,12 +35,12 @@ async function fetch(cookieJars, url, options) { options.headers = {}; options.headers.cookie = cookies.slice(0, -2); } - - let wantFollow = options && options.redirect && options.redirect === 'follow' - if (wantFollow) { - options.redirect = 'manual' + + const wantFollow = !options || !options.redirect || options.redirect === 'follow'; + if(wantFollow) { + options.redirect = 'manual'; } - let result = await _fetch(url, options); + const result = await _fetch(url, options); // I cannot use headers.get() here because it joins the cookies to a string cookies = result.headers[Object.getOwnPropertySymbols(result.headers)[0]]["set-cookie"]; if(cookies && cookieJars) { @@ -52,10 +52,10 @@ async function fetch(cookieJars, url, options) { else if(cookieJars instanceof CookieJar && cookieJars.flags.includes("w")) cookies.forEach(c => cookieJars.addCookie(c, url)); } - if (wantFollow && redirectStatus.has(result.status)) { - const location = result.headers.get('Location') - options.redirect = 'follow' - result = await fetch(cookieJars, location, options) + if(wantFollow && redirectStatus.has(result.status)) { + const location = result.headers.get('Location'); + options.redirect = 'follow'; + return fetch(cookieJars, location, options); } return result; }