@buttercup/googledrive-client
Version:
Basic client for Google Drive
38 lines (37 loc) • 1.19 kB
JavaScript
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;
}