UNPKG

@buttercup/googledrive-client

Version:
38 lines (37 loc) 1.19 kB
import { fetch } from "@buttercup/fetch"; import URL from "url-parse"; import { Layerr } from "layerr"; export function handleBadResponse(response) { if (!response.ok) { const error = new Layerr({ info: { status: response.status, statusText: response.statusText, url: response.url } }, `Request failed: ${response.status} ${response.statusText}`); if (response.headers.get("www-authenticate")) { throw new Layerr({ cause: error, info: { authFailure: /error=(")?invalid_token/.test(response.headers.get("www-authenticate")) } }, "Bad authentication"); } throw error; } } export async function request(config) { const url = new URL(config.url); if (config.query) { const newQuery = Object.assign(url.query || {}, config.query); url.set("query", newQuery); } const response = await fetch(url.toString(), { method: config.method, headers: config.headers, // @ts-ignore body: config.body }); return response; }