forked from izu/student-web-if-development-kit
32 lines
1004 B
JavaScript
32 lines
1004 B
JavaScript
export class ViewerApi {
|
|
static API_BASE = 'https://api.ifuntanhub.dev';
|
|
|
|
static assetUrl(uuid) {
|
|
return `${this.API_BASE}/assets/${uuid}`;
|
|
}
|
|
|
|
static async fetchBlob(url, onProgress) {
|
|
const response = await fetch(url);
|
|
if (!response.ok) throw new Error(`Gagal mengambil berkas (HTTP ${response.status}).`);
|
|
|
|
const contentLength = response.headers.get('Content-Length');
|
|
if (onProgress && contentLength && response.body) {
|
|
const total = Number.parseInt(contentLength, 10);
|
|
const reader = response.body.getReader();
|
|
const chunks = [];
|
|
let received = 0;
|
|
|
|
while (true) {
|
|
const { done, value } = await reader.read();
|
|
if (done) break;
|
|
chunks.push(value);
|
|
received += value.length;
|
|
onProgress(received / total);
|
|
}
|
|
return new Blob(chunks);
|
|
}
|
|
|
|
return response.blob();
|
|
}
|
|
}
|