UNPKG

radish

Version:

Radish is a React-based static site generator that outputs plain HTML and CSS.

28 lines (27 loc) 1.13 kB
import http from "http"; import https from "https"; export default function fetch(url) { return new Promise((resolve, reject) => { const lib = url.startsWith("https") ? https : http; lib.get(url, res => { if (!res.statusCode) return reject(new Error(`GET "${url}" returned no status.`)); if ([301, 302, 307].includes(res.statusCode)) { if (!res.headers.location) { const err = new Error(`GET "${url}" returned status ${res.statusCode} but no location header.`); return reject(err); } return fetch(new URL(res.headers.location, url).toString()) .then(resolve) .catch(reject); } if (res.statusCode === 200) { const chunks = []; res.on("data", chunk => chunks.push(chunk)); res.on("end", () => resolve(Buffer.concat(chunks).toString())); } else reject(new Error(`GET ${url} returned status ${res.statusCode}`)); }); }); }