koneksi-ts-sdk
Version:
A JS/TS SDK for interacting with Koneksi API services
111 lines (110 loc) • 4.53 kB
JavaScript
export class DirectoryOperations {
constructor(httpClient) {
this.httpClient = httpClient;
}
/**
* Create a new directory
* @param params - Directory creation parameters
* @param params.name - The name of the directory
* @param params.directory_id - The ID of the parent directory (optional, default is root)
* @returns Promise<Directory> - The created directory
* @example
* await sdk.directory.create({ name: "New Folder", directory_id: "parent_dir_123" });
*/
async create(params) {
const response = await this.httpClient.post("/clients/v1/directories", params);
if (response.status !== "success" || !response.data) {
throw new Error(response.message || "Failed to create directory");
}
return response.data;
}
/**
* Read a directory by ID
* @param directory_id - The ID of the directory to retrieve
* @returns Promise<DirectoryReadResponse> - The directory details with files and subdirectories
* @example
* await sdk.directory.read("dir_1234567890");
*/
async read(directory_id) {
console.log(directory_id);
const response = await this.httpClient.get(`/clients/v1/directories/${directory_id}`);
console.log(response);
if (response.status !== "success" || !response.data) {
throw new Error(response.message || "Failed to read directory");
}
return response.data;
}
/**
* Update a directory
* @param directory_id - The ID of the directory to update
* @param params - Directory update parameters
* @returns Promise<string> - Success message
* @example
* await sdk.directory.update("dir_1234567890", { name: "Updated Name", directory_id: "parent_dir_123" });
*/
async update(directory_id, params) {
const response = await this.httpClient.put(`/clients/v1/directories/${directory_id}`, params);
if (response.status !== "success") {
throw new Error(response.message || "Failed to update directory");
}
return response.message;
}
/**
* Delete a directory
* @param directory_id - The ID of the directory to delete
* @returns Promise<string> - Success message
* @example
* await sdk.directory.delete("dir_1234567890");
*/
async delete(directory_id) {
const response = await this.httpClient.delete(`/clients/v1/directories/${directory_id}`);
if (response.status !== "success") {
throw new Error(response.message || "Failed to delete directory");
}
return response.message;
}
/**
* Rename a directory
* @param params - Rename parameters
* @param params.directoryId - The ID of the directory to rename
* @param params.name - The new name for the directory
* @returns Promise<string> - Success message
* @example
* await sdk.directory.rename({ directoryId: "dir_1234567890", name: "New Directory Name" });
*/
async rename(params) {
if (!params.directoryId) {
throw new Error("directoryId is required");
}
if (!params.name) {
throw new Error("name is required");
}
const response = await this.httpClient.put(`/clients/v1/directories/${params.directoryId}`, { name: params.name });
if (response.status !== "success") {
throw new Error(response.message || "Failed to rename directory");
}
return response.message;
}
/**
* Move a directory to a new parent directory
* @param params - Move parameters
* @param params.directoryId - The ID of the directory to move
* @param params.parentDirectoryId - The ID of the new parent directory
* @returns Promise<string> - Success message
* @example
* await sdk.directory.move({ directoryId: "dir_1234567890", parentDirectoryId: "parent_dir_9876543210" });
*/
async move(params) {
if (!params.directoryId) {
throw new Error("directoryId is required");
}
if (!params.parentDirectoryId) {
throw new Error("parentDirectoryId is required");
}
const response = await this.httpClient.put(`/clients/v1/directories/${params.directoryId}`, { directory_id: params.parentDirectoryId });
if (response.status !== "success") {
throw new Error(response.message || "Failed to move directory");
}
return response.message;
}
}