0
Fork 0
mirror of https://github.com/stonith404/pingvin-share.git synced 2025-02-05 01:38:56 -05:00
pingvin-share/frontend/src/services/share.service.ts

98 lines
2.3 KiB
TypeScript
Raw Normal View History

import {
MyShare,
Share,
ShareMetaData,
ShareSecurity,
} from "../types/share.type";
import api from "./api.service";
const create = async (
id: string,
expiration: string,
security?: ShareSecurity
) => {
return (await api.post("shares", { id, expiration, security })).data;
};
const completeShare = async (id: string) => {
return (await api.post(`shares/${id}/complete`)).data;
};
const get = async (id: string): Promise<Share> => {
const shareToken = localStorage.getItem(`share_${id}_token`);
return (
await api.get(`shares/${id}`, {
headers: { "X-Share-Token": shareToken ?? "" },
})
).data;
};
const getMetaData = async (id: string): Promise<ShareMetaData> => {
const shareToken = localStorage.getItem(`share_${id}_token`);
return (
await api.get(`shares/${id}/metaData`, {
headers: { "X-Share-Token": shareToken ?? "" },
})
).data;
};
const remove = async (id: string) => {
await api.delete(`shares/${id}`);
};
const getMyShares = async (): Promise<MyShare[]> => {
return (await api.get("shares")).data;
};
2022-10-13 23:23:33 +02:00
const getShareToken = async (id: string, password?: string) => {
const { token } = (await api.post(`/shares/${id}/token`, { password })).data;
localStorage.setItem(`share_${id}_token`, token);
};
const isShareIdAvailable = async (id: string): Promise<boolean> => {
return (await api.get(`shares/isShareIdAvailable/${id}`)).data.isAvailable;
};
const getFileDownloadUrl = async (shareId: string, fileId: string) => {
const shareToken = localStorage.getItem(`share_${shareId}_token`);
return (
await api.get(`shares/${shareId}/files/${fileId}/download`, {
headers: { "X-Share-Token": shareToken ?? "" },
})
).data.url;
};
const downloadFile = async (shareId: string, fileId: string) => {
window.location.href = await getFileDownloadUrl(shareId, fileId);
};
const uploadFile = async (
shareId: string,
file: File,
progressCallBack: (uploadingProgress: number) => void
) => {
var formData = new FormData();
formData.append("file", file);
return (
await api.post(`shares/${shareId}/files`, formData, {
onUploadProgress: (progressEvent) =>
progressCallBack(progressEvent.loaded),
})
).data;
};
export default {
create,
completeShare,
2022-10-13 23:23:33 +02:00
getShareToken,
get,
remove,
getMetaData,
getMyShares,
isShareIdAvailable,
downloadFile,
uploadFile,
};