Spaces:
Sleeping
Sleeping
File size: 1,576 Bytes
7aec436 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import {readAsArrayBuffer} from '../common/readers';
import request from '../common/request';
import { AbortError } from '../common/errors';
const downloadProject = async (buffer, progressCallback) => {
const controller = typeof AbortController === 'function' && new AbortController();
const downloadProject = await import(/* webpackChunkName: "downloader" */ './download-project.js');
let reject;
return {
promise: new Promise((_resolve, _reject) => {
reject = _reject;
downloadProject.downloadProject(buffer, progressCallback, controller && controller.signal)
.then(result => _resolve(result))
.catch(err => _reject(err));
}),
terminate: () => {
reject(new AbortError());
if (controller) {
controller.abort();
}
}
};
};
const fromURL = async (url, progressCallback) => {
const buffer = await request({
url,
type: 'arraybuffer',
progressCallback: (progress) => {
progressCallback('fetch', progress);
}
});
return downloadProject(buffer, progressCallback);
};
const fromID = (id, token, progressCallback) => {
const tokenPart = token ? `?token=${token}` : '';
const url = `https://projects.penguinmod.com/api/projects/getPublished?type=file&id=${id}`;
return fromURL(url, progressCallback);
};
const fromFile = async (file, progressCallback) => {
const buffer = await readAsArrayBuffer(file);
return downloadProject(buffer, progressCallback);
};
export default {
fromID,
fromURL,
fromFile
};
|