fix typo and improve as asked

This commit is contained in:
Etienne Prothon 2020-06-16 00:23:55 +02:00
parent 389d5fd426
commit 648f12a1eb

View File

@ -1,7 +1,7 @@
import _fetch from "node-fetch"; import _fetch from "node-fetch";
import CookieJar from "./cookie-jar.mjs"; import CookieJar from "./cookie-jar.mjs";
import Cookie from "./cookie.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]); const redirectStatus = new Set([301, 302, 303, 307, 308]);
@ -36,11 +36,11 @@ async function fetch(cookieJars, url, options) {
options.headers.cookie = cookies.slice(0, -2); options.headers.cookie = cookies.slice(0, -2);
} }
let wantFollow = options && options.redirect && options.redirect === 'follow' const wantFollow = !options || !options.redirect || options.redirect === 'follow';
if(wantFollow) { if(wantFollow) {
options.redirect = 'manual' 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 // I cannot use headers.get() here because it joins the cookies to a string
cookies = result.headers[Object.getOwnPropertySymbols(result.headers)[0]]["set-cookie"]; cookies = result.headers[Object.getOwnPropertySymbols(result.headers)[0]]["set-cookie"];
if(cookies && cookieJars) { if(cookies && cookieJars) {
@ -53,9 +53,9 @@ async function fetch(cookieJars, url, options) {
cookies.forEach(c => cookieJars.addCookie(c, url)); cookies.forEach(c => cookieJars.addCookie(c, url));
} }
if(wantFollow && redirectStatus.has(result.status)) { if(wantFollow && redirectStatus.has(result.status)) {
const location = result.headers.get('Location') const location = result.headers.get('Location');
options.redirect = 'follow' options.redirect = 'follow';
result = await fetch(cookieJars, location, options) return fetch(cookieJars, location, options);
} }
return result; return result;
} }