90 lines
2.1 KiB
TypeScript
Raw Normal View History

import {
2022-08-30 21:26:35 +02:00
Responses,
Requests,
get_token,
post_token,
post_token_form,
isErrorResponse
} from './base';
export const get_root = (
2022-08-30 21:26:35 +02:00
token: string
): Promise<Responses.FS.GetRootResponse | Responses.ErrorResponse> =>
2022-08-30 21:26:35 +02:00
get_token('/api/fs/root', token);
export const get_node = (
2022-08-30 21:26:35 +02:00
token: string,
node: number
): Promise<Responses.FS.GetNodeResponse | Responses.ErrorResponse> =>
2022-08-30 21:26:35 +02:00
get_token(`/api/fs/node/${node}`, token);
export const get_path = (
2022-08-30 21:26:35 +02:00
token: string,
node: number
): Promise<Responses.FS.GetPathResponse | Responses.ErrorResponse> =>
2022-08-30 21:26:35 +02:00
get_token(`/api/fs/path/${node}`, token);
export const create_folder = (
2022-08-30 21:26:35 +02:00
token: string,
parent: number,
name: string
): Promise<Responses.FS.CreateFolderResponse | Responses.ErrorResponse> =>
2022-08-30 21:26:35 +02:00
post_token<Requests.FS.CreateFolderRequest>(
'/api/fs/createFolder',
{
parent: parent,
name: name
},
token
);
export const create_file = (
2022-08-30 21:26:35 +02:00
token: string,
parent: number,
name: string
): Promise<Responses.FS.CreateFileResponse | Responses.ErrorResponse> =>
2022-08-30 21:26:35 +02:00
post_token<Requests.FS.CreateFileRequest>(
'/api/fs/createFile',
{
parent: parent,
name: name
},
token
);
export const delete_node = (
2022-08-30 21:26:35 +02:00
token: string,
node: number
): Promise<Responses.FS.DeleteResponse | Responses.ErrorResponse> =>
2022-08-30 21:26:35 +02:00
post_token(`/api/fs/delete/${node}`, {}, token);
export const upload_file = async (
2022-08-30 21:26:35 +02:00
token: string,
parent: number,
file: File,
onProgress: (progressEvent: ProgressEvent) => void
): Promise<Responses.FS.UploadFileResponse | Responses.ErrorResponse> => {
2022-08-30 21:26:35 +02:00
const node = await create_file(token, parent, file.name);
if (isErrorResponse(node)) return node;
2022-08-30 21:26:35 +02:00
const form = new FormData();
form.set('file', file);
return post_token_form(
`/api/fs/upload/${node.id}`,
form,
token,
onProgress
);
};
export function download_file(token: string, id: number) {
2022-08-30 21:26:35 +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);
}