@soleil-se/build-app
Version:
Script for building WebApps, RESTApps, Widgets and MCP Servers with Svelte in Sitevision.
47 lines (40 loc) • 1.46 kB
JavaScript
import got from 'got';
import config from '@soleil-se/build-config';
const { name, host, auth, acceptUnauthorizedCert } = config.env;
const [username, password] = Buffer.from(auth || '', 'base64').toString().split(/:(.*)/s);
const options = {
prefixUrl: `${host}/rest-api/1/0/${encodeURIComponent(name)}/`,
username,
password,
method: 'POST',
responseType: 'json',
resolveBodyOnly: true,
hooks: {
beforeRedirect: [
() => {
// Addon upload won't work on redirect, throw error to stop the request
throw new Error('REDIRECT');
},
],
beforeError: [
(error) => {
const { response } = error;
if (response) {
const { body } = response;
let message = body && body.message ? body.message : body.toString();
if (!message && response.statusCode === 401) {
message = 'Unauthorized, correct username and password?';
} else if (response.statusCode >= 300 && response.statusCode < 400) {
message = `Request to '${response?.requestUrl?.origin}' was redirected to '${response?.redirectUrls[0]?.origin}', check if the site primary address is correct in config.`;
}
return new Error(`${response.statusCode} - ${message}`);
}
return new Error(error.message);
},
],
},
};
if (acceptUnauthorizedCert) {
options.https = { rejectUnauthorized: false };
}
export default got.extend(options);