2022-09-03 23:32:20 +02:00
|
|
|
import type { Requests, Responses, UploadFile } from '@/dto';
|
2022-08-24 16:15:33 +02:00
|
|
|
import {
|
2022-09-03 23:32:20 +02:00
|
|
|
get_token,
|
|
|
|
post_token,
|
|
|
|
post_token_form,
|
|
|
|
isErrorResponse
|
|
|
|
} from './base';
|
2022-10-10 23:07:40 +02:00
|
|
|
import axios from 'axios';
|
2022-08-24 16:15:33 +02:00
|
|
|
|
|
|
|
export const get_root = (
|
2022-09-03 23:32:20 +02:00
|
|
|
token: string
|
|
|
|
): Promise<Responses.GetRoot | Responses.Error> =>
|
|
|
|
get_token('/api/fs/root', token);
|
2022-08-24 16:15:33 +02:00
|
|
|
|
|
|
|
export const get_node = (
|
2022-09-03 23:32:20 +02:00
|
|
|
token: string,
|
|
|
|
node: number
|
|
|
|
): Promise<Responses.GetNode | Responses.Error> =>
|
|
|
|
get_token(`/api/fs/node/${node}`, token);
|
2022-08-24 16:15:33 +02:00
|
|
|
|
|
|
|
export const get_path = (
|
2022-09-03 23:32:20 +02:00
|
|
|
token: string,
|
|
|
|
node: number
|
|
|
|
): Promise<Responses.GetPath | Responses.Error> =>
|
|
|
|
get_token(`/api/fs/path/${node}`, token);
|
2022-08-24 16:15:33 +02:00
|
|
|
|
|
|
|
export const create_folder = (
|
2022-09-03 23:32:20 +02:00
|
|
|
token: string,
|
|
|
|
parent: number,
|
|
|
|
name: string
|
|
|
|
): Promise<
|
|
|
|
Responses.CreateFolder | Responses.CreateFolderExists | Responses.Error
|
|
|
|
> =>
|
|
|
|
post_token<Requests.CreateFolder>(
|
2022-10-10 23:07:40 +02:00
|
|
|
'/api/fs/create_folder',
|
2022-09-03 23:32:20 +02:00
|
|
|
{
|
|
|
|
parent: parent,
|
|
|
|
name: name
|
|
|
|
},
|
|
|
|
token
|
|
|
|
);
|
2022-08-24 16:15:33 +02:00
|
|
|
|
|
|
|
export const create_file = (
|
2022-09-03 23:32:20 +02:00
|
|
|
token: string,
|
|
|
|
parent: number,
|
|
|
|
name: string
|
|
|
|
): Promise<
|
|
|
|
Responses.CreateFolder | Responses.CreateFolderExists | Responses.Error
|
|
|
|
> =>
|
|
|
|
post_token<Requests.CreateFolder>(
|
2022-10-10 23:07:40 +02:00
|
|
|
'/api/fs/create_file',
|
2022-09-03 23:32:20 +02:00
|
|
|
{
|
|
|
|
parent: parent,
|
|
|
|
name: name
|
|
|
|
},
|
|
|
|
token
|
|
|
|
);
|
2022-08-24 16:15:33 +02:00
|
|
|
|
2022-09-03 23:32:20 +02:00
|
|
|
export const create_zip = (
|
|
|
|
token: string,
|
|
|
|
nodes: number[]
|
|
|
|
): Promise<Responses.CreateZip | Responses.Error> =>
|
|
|
|
post_token<Requests.CreateZip>(
|
|
|
|
'/api/fs/create_zip',
|
|
|
|
{
|
|
|
|
nodes: nodes
|
|
|
|
},
|
|
|
|
token
|
|
|
|
);
|
2022-08-24 16:15:33 +02:00
|
|
|
|
2022-09-03 23:32:20 +02:00
|
|
|
export const download_preview = (
|
|
|
|
token: string,
|
|
|
|
node: number
|
|
|
|
): Promise<Responses.DownloadBase64 | Responses.Error> =>
|
|
|
|
get_token(`/api/fs/download_preview/${node}`, token);
|
2022-08-24 16:15:33 +02:00
|
|
|
|
2022-09-03 23:32:20 +02:00
|
|
|
export const get_type = (
|
|
|
|
token: string,
|
|
|
|
node: number
|
|
|
|
): Promise<Responses.GetType | Responses.Error> =>
|
|
|
|
get_token(`/api/fs/get_type/${node}`, token);
|
|
|
|
|
|
|
|
export async function upload_file(
|
|
|
|
token: string,
|
|
|
|
file: UploadFile,
|
|
|
|
onProgress: (progressEvent: ProgressEvent) => void
|
2022-10-14 01:59:29 +02:00
|
|
|
): Promise<[Responses.Success | Responses.Error, boolean]> {
|
2022-09-03 23:32:20 +02:00
|
|
|
const node = await create_file(token, file.parent, file.file.name);
|
2022-10-14 01:59:29 +02:00
|
|
|
if (isErrorResponse(node)) return [node, false];
|
2022-09-03 23:32:20 +02:00
|
|
|
if ('exists' in node && !node.isFile)
|
2022-10-14 01:59:29 +02:00
|
|
|
return [{ statusCode: 400, message: 'File exists as folder' }, false];
|
2022-09-03 23:32:20 +02:00
|
|
|
|
2022-10-14 01:59:29 +02:00
|
|
|
return [
|
|
|
|
await axios
|
|
|
|
.post(`/api/fs/upload/${node.id}`, file.file, {
|
|
|
|
headers: {
|
|
|
|
Authorization: 'Bearer ' + token,
|
|
|
|
'Content-type': 'multipart/form-data'
|
|
|
|
},
|
|
|
|
onUploadProgress: onProgress
|
|
|
|
})
|
|
|
|
.then((res) => {
|
|
|
|
console.log(res);
|
|
|
|
return res.data;
|
|
|
|
})
|
|
|
|
.catch((err) => {
|
|
|
|
console.log(err);
|
|
|
|
return err.response.data;
|
|
|
|
}),
|
|
|
|
'exists' in node
|
|
|
|
];
|
2022-09-03 23:32:20 +02:00
|
|
|
}
|
2022-08-24 16:15:33 +02:00
|
|
|
|
|
|
|
export function download_file(token: string, id: number) {
|
2022-09-03 23:32:20 +02:00
|
|
|
const form = document.createElement('form');
|
|
|
|
form.method = 'post';
|
|
|
|
form.target = '_blank';
|
|
|
|
form.action = '/api/fs/download';
|
|
|
|
form.innerHTML = `<input type="hidden" name="jwtToken" value="${token}"><input type="hidden" name="id" value="${id}">`;
|
|
|
|
document.body.appendChild(form);
|
|
|
|
form.submit();
|
|
|
|
document.body.removeChild(form);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function download_multi_file(token: string, ids: number[]) {
|
|
|
|
const form = document.createElement('form');
|
|
|
|
form.method = 'post';
|
|
|
|
form.target = '_blank';
|
|
|
|
form.action = '/api/fs/download_multi';
|
|
|
|
form.innerHTML = `<input type="hidden" name="jwtToken" value="${token}"><input type="hidden" name="id" value="${ids.join(
|
|
|
|
','
|
|
|
|
)}">`;
|
|
|
|
document.body.appendChild(form);
|
|
|
|
form.submit();
|
|
|
|
document.body.removeChild(form);
|
2022-08-24 16:15:33 +02:00
|
|
|
}
|