96 lines
2.2 KiB
TypeScript
96 lines
2.2 KiB
TypeScript
import {
|
|
Responses,
|
|
Requests,
|
|
get_token,
|
|
post_token,
|
|
post_token_form,
|
|
isErrorResponse
|
|
} from './base';
|
|
|
|
export const get_root = (
|
|
token: string
|
|
): Promise<Responses.FS.GetRootResponse | Responses.ErrorResponse> =>
|
|
get_token('/api/fs/root', token);
|
|
|
|
export const get_node = (
|
|
token: string,
|
|
node: number
|
|
): Promise<Responses.FS.GetNodeResponse | Responses.ErrorResponse> =>
|
|
get_token(`/api/fs/node/${node}`, token);
|
|
|
|
export const get_path = (
|
|
token: string,
|
|
node: number
|
|
): Promise<Responses.FS.GetPathResponse | Responses.ErrorResponse> =>
|
|
get_token(`/api/fs/path/${node}`, token);
|
|
|
|
export const create_folder = (
|
|
token: string,
|
|
parent: number,
|
|
name: string
|
|
): Promise<Responses.FS.CreateFolderResponse | Responses.ErrorResponse> =>
|
|
post_token<Requests.FS.CreateFolderRequest>(
|
|
'/api/fs/createFolder',
|
|
{
|
|
parent: parent,
|
|
name: name
|
|
},
|
|
token
|
|
);
|
|
|
|
export const create_file = (
|
|
token: string,
|
|
parent: number,
|
|
name: string
|
|
): Promise<Responses.FS.CreateFileResponse | Responses.ErrorResponse> =>
|
|
post_token<Requests.FS.CreateFileRequest>(
|
|
'/api/fs/createFile',
|
|
{
|
|
parent: parent,
|
|
name: name
|
|
},
|
|
token
|
|
);
|
|
|
|
export const delete_node = (
|
|
token: string,
|
|
node: number
|
|
): Promise<Responses.FS.DeleteResponse | Responses.ErrorResponse> =>
|
|
post_token<Requests.FS.DeleteRequest>(
|
|
'/api/fs/delete',
|
|
{
|
|
node: node
|
|
},
|
|
token
|
|
);
|
|
|
|
export const upload_file = async (
|
|
token: string,
|
|
parent: number,
|
|
file: File,
|
|
onProgress: (progressEvent: ProgressEvent) => void
|
|
): Promise<Responses.FS.UploadFileResponse | Responses.ErrorResponse> => {
|
|
const node = await create_file(token, parent, file.name);
|
|
if (isErrorResponse(node)) return node;
|
|
|
|
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) {
|
|
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);
|
|
}
|