Files
ncd-fe/packages/pl-api/lib/client/drive.ts
nicole mikołajczyk a4dd5e0358 pl-api: reimport TypeObject, need to eep
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2026-02-27 02:32:38 +01:00

132 lines
3.5 KiB
TypeScript

import * as v from 'valibot';
import { driveFileSchema, driveFolderSchema, driveStatusSchema } from '@/entities';
import type { PlApiBaseClient } from '@/client-base';
import type { UpdateFileParams } from '@/params/drive';
import type { EmptyObject } from '@/utils/types';
const drive = (client: PlApiBaseClient) => ({
getDrive: async () => {
await client.getIceshrimpAccessToken();
const response = await client.request('/api/iceshrimp/drive/folder');
return v.parse(driveFolderSchema, response.json);
},
getFolder: async (id: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request(`/api/iceshrimp/drive/folder/${id}`);
return v.parse(driveFolderSchema, response.json);
},
createFolder: async (name: string, parentId?: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request('/api/iceshrimp/drive/folder', {
method: 'POST',
body: { name, parentId: parentId || null },
});
return v.parse(driveFolderSchema, response.json);
},
updateFolder: async (id: string, name: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request(`/api/iceshrimp/drive/folder/${id}`, {
method: 'PUT',
body: name,
});
return v.parse(driveFolderSchema, response.json);
},
deleteFolder: async (id: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request<EmptyObject>(`/api/iceshrimp/drive/folder/${id}`, {
method: 'DELETE',
});
return response;
},
moveFolder: async (id: string, targetFolderId?: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request(`/api/iceshrimp/drive/folder/${id}/move`, {
method: 'POST',
body: { folderId: targetFolderId || null },
});
return v.parse(driveFolderSchema, response.json);
},
getFile: async (id: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request(`/api/iceshrimp/drive/${id}`);
return v.parse(driveFileSchema, response.json);
},
createFile: async (file: File, folderId?: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request('/api/iceshrimp/drive', {
method: 'POST',
body: { file },
params: { folderId },
contentType: '',
});
return v.parse(driveFileSchema, response.json);
},
updateFile: async (id: string, params: UpdateFileParams) => {
await client.getIceshrimpAccessToken();
const response = await client.request(`/api/iceshrimp/drive/${id}`, {
method: 'PATCH',
body: params,
});
return v.parse(driveFileSchema, response.json);
},
deleteFile: async (id: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request<Record<string, never>>(`/api/iceshrimp/drive/${id}`, {
method: 'DELETE',
});
return response;
},
moveFile: async (id: string, targetFolderId?: string) => {
await client.getIceshrimpAccessToken();
const response = await client.request(`/api/iceshrimp/drive/${id}/move`, {
method: 'POST',
body: { folderId: targetFolderId || null },
});
return v.parse(driveFileSchema, response.json);
},
getDriveStatus: async () => {
await client.getIceshrimpAccessToken();
const response = await client.request('/api/iceshrimp/drive/status');
return v.parse(driveStatusSchema, response.json);
},
});
export { drive };