85 lines
2.2 KiB
TypeScript
Raw Normal View History

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