@foxpage/foxpage-manager
Version:
foxpage resource manager
62 lines (61 loc) • 2.04 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchPackage = void 0;
const https_1 = __importDefault(require("https"));
const axios_1 = __importDefault(require("axios"));
const fs_extra_1 = require("fs-extra");
const foxpage_shared_1 = require("@foxpage/foxpage-shared");
const download = async (url, opt) => {
// At request level
const agent = new https_1.default.Agent({
rejectUnauthorized: false,
});
const config = Object.assign({ url, method: 'GET', httpsAgent: agent }, opt);
return (await (0, axios_1.default)(config)).data;
};
async function fetchFromNet(url, opt) {
try {
const content = await download(url, opt);
const result = {
content,
};
return foxpage_shared_1.optional.ok(result);
}
catch (error) {
return foxpage_shared_1.optional.fail(`download from url: ${url} fail: ${error.message}`);
}
}
async function fetchFromFile(filepath) {
try {
const content = await (0, fs_extra_1.readFile)(filepath, 'utf8');
const result = {
content: content,
};
return foxpage_shared_1.optional.ok(result);
}
catch (error) {
return foxpage_shared_1.optional.fail(`open file "${filepath}" fail: ${error.message}`);
}
}
async function fetchPackage(source, opt) {
try {
if (typeof source === 'string') {
return fetchFromNet(source, opt);
}
switch (source.type) {
case 'url':
return fetchFromNet(source.url, opt);
case 'file':
return fetchFromFile(source.filepath);
case 'code':
return foxpage_shared_1.optional.ok({ content: source.code });
}
}
catch (error) {
return foxpage_shared_1.optional.fail(error);
}
}
exports.fetchPackage = fetchPackage;