UNPKG

@bscotch/gamemaker-releases

Version:

Utility for combining GameMaker release data into a single feed.

37 lines 1.22 kB
import fetch from 'node-fetch'; import { XMLParser } from 'fast-xml-parser'; import { isError } from './utils.js'; export async function fetchXml(url, validator) { const res = await fetchUrl(url); try { const data = await res.text(); const asJson = new XMLParser().parse(data); return validator ? validator.parse(asJson) : asJson; } catch (err) { throw new Error(`Error parsing XML from ${url}: ${isError(err) ? err.message : 'UNKNOWN'}`); } } export async function fetchJson(url, validator) { const res = await fetchUrl(url); try { const parsed = await res.json(); return validator ? validator.parse(parsed) : parsed; } catch (err) { throw new Error(`Error parsing JSON from ${url}: ${isError(err) ? err.message : 'UNKNOWN'}`); } } async function fetchUrl(url) { try { const res = await fetch(url); if (res.status >= 300) { throw new Error(`Error fetching "${url}": ${res.status} ${res.statusText}`); } return res; } catch (err) { throw new Error(`Error fetching "${url}": ${isError(err) ? err.message : 'UNKNOWN'}`); } } //# sourceMappingURL=fetch.js.map