Spaces:
Sleeping
Sleeping
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 | |
}; | |