koneksi-ts-sdk
Version:
A JS/TS SDK for interacting with Koneksi API services
184 lines (183 loc) • 8.25 kB
TypeScript
import { FileData, UploadFileResponse, UploadFileRequest, UpdateFileRequest, ReadFileRequest, DownloadFileRequest, RenameFileRequest, MoveFileRequest, ReadFileAccessRequest, SetFileAccessRequest, GenerateTemporaryTokenRequest, GenerateTemporaryTokenResponse, GetPreviewLinkRequest, GetPreviewLinkResponse, CreateTemporaryLinkRequest, CreateTemporaryLinkResponse, ReadFileAccessResponse, PublicDownloadFileRequest } from "../types/files.types.js";
import { HttpClient } from "../http-client.js";
export declare class FileOperations {
private httpClient;
constructor(httpClient: HttpClient);
/**
* Upload a file to a directory
* @param params - File upload parameters
* @param params.file - File to upload (File object, Buffer, or string file path)
* @param params.directory_id - Optional directory ID to upload to (defaults to root)
* @param params.passphrase - Optional passphrase for file encryption
* @returns Promise<UploadFileResponse> - The upload response
* @example
* // Upload with File object (browser)
* await sdk.file.upload({
* file: fileInput.files[0],
* directory_id: "dir_123"
* });
*
* @example
* // Upload with string path (Node.js)
* await sdk.file.upload({
* file: "test.txt",
* directory_id: "dir_123",
* passphrase: "MySecret123!" Alphanumeric passphrase with a special character is required
* });
*/
upload(params: UploadFileRequest): Promise<UploadFileResponse>;
/**
* Read a file by ID
* @param params - File read parameters
* @param params.fileId - The ID of the file to retrieve
* @param params.includeChunks - Optional flag to include IPFS chunks (default: false)
* @returns Promise<FileData> - The file details
*/
read(params: ReadFileRequest): Promise<FileData>;
/**
* Update a file
* @param fileId - The ID of the file to update
* @param params - File update parameters
* @returns Promise<string> - Success message
*/
update(fileId: string, params: UpdateFileRequest): Promise<string>;
/**
* Delete a file
* @param fileId - The ID of the file to delete
* @returns Promise<string> - Success message
*/
delete(fileId: string): Promise<string>;
/**
* Download a file by ID (authenticated/private)
* @param params - File download parameters
* @param params.fileId - The ID of the file to download
* @param params.passphrase - Optional passphrase for file decryption (required for encrypted files)
* @returns Promise<Buffer> - The file content as buffer
* @example
* await sdk.file.download({ fileId: "file_1234567890", passphrase: "MySecret123!" });
*/
download(params: DownloadFileRequest): Promise<Buffer>;
/**
* Rename a file by ID
* @param params - Rename parameters
* @param params.fileId - The ID of the file to rename
* @param params.name - The new name for the file
* @returns Promise<string> - Success message
* @example
* await sdk.file.rename({ fileId: "file_1234567890", name: "test2.txt" });
*/
rename(params: RenameFileRequest): Promise<string>;
/**
* Move a file to a different directory
* @param params - Move parameters
* @param params.fileId - The ID of the file to move
* @param params.directoryId - The ID of the target directory
* @returns Promise<string> - Success message
* @example
* await sdk.file.move({ fileId: "file_1234567890", directoryId: "dir_1234567890" });
*/
move(params: MoveFileRequest): Promise<string>;
/**
* Set file access permissions
* @param params - File access set parameters
* @param params.fileId - The ID of the file to set access for
* @param params.access - The access type: "public", "private", "password", "email"
* @param params.value - Required for password (string) and email (string[])
* @returns Promise<string> - Success message
* @example
* // Set to public
* await sdk.file.setAccess({
* fileId: "file_1234567890",
* access: "public"
* });
*
* // Set to private
* await sdk.file.setAccess({
* fileId: "file_1234567890",
* access: "private"
* });
*
* @example
* // Set password protection
* await sdk.file.setAccess({
* fileId: "file_1234567890",
* access: "password",
* value: "1234567890"
* });
*
* @example
* // Set email access
* await sdk.file.setAccess({
* fileId: "file_1234567890",
* access: "email",
* value: ["test@test.com", "test2@test.com"] // make sure to pass existing koneksi email accounts
* });
*/
setAccess(params: SetFileAccessRequest): Promise<string>;
/**
* Generate a temporary token for file access
* @param params - Generate temporary token parameters
* @param params.fileId - The ID of the file to generate a temporary token for
* @param params.expiresIn - Optional expiration time in seconds (default: 24 hours)
* @returns Promise<GenerateTemporaryTokenResponse> - The temporary token response with file_key and duration
* @example
* const token = await sdk.file.generateTemporaryToken({
* fileId: "file_1234567890",
* expiresIn: 3600 // 1 hour
* });
* // Returns: { duration: "1h0m0s", file_key: "file_1234567890_abc123..." }
*/
generateTemporaryToken(params: GenerateTemporaryTokenRequest): Promise<GenerateTemporaryTokenResponse>;
/**
* Get a preview link for a file
* @param params - Get preview link parameters
* @param params.fileId - The ID of the file to get a preview link for
* @returns Promise<GetPreviewLinkResponse> - The preview link response
* @example
* const preview = await sdk.file.getPreviewLink({
* fileId: "file_1234567890"
* });
* // Returns: { previewUrl: "https://staging.koneksi.co.kr/preview/file_1234567890" }
*/
getPreviewLink(params: GetPreviewLinkRequest): Promise<GetPreviewLinkResponse>;
/**
* Create a temporary preview link for a file
* @param params - Create temporary link parameters
* @param params.fileId - The ID of the file to create a temporary link for
* @param params.expiresIn - Optional expiration time in seconds (e.g 3600 for 1 hour)
* @returns Promise<CreateTemporaryLinkResponse> - The temporary preview link response
* @example
* const tempLink = await sdk.file.createTemporaryLink({
* fileId: "file_1234567890",
* expiresIn: 3600 // 1 hour
* });
* // Returns: {
* // temporaryPreviewUrl: "https://app-staging.koneksi.co.kr/preview/file_1234567890?token=abc123...",
* // duration: "1h0m0s",
* // file_key: "file_1234567890_abc123..."
* // }
*/
createTemporaryLink(params: CreateTemporaryLinkRequest): Promise<CreateTemporaryLinkResponse>;
/**
* Read file access information by ID (using public endpoint)
* @param params - File access read parameters
* @param params.fileId - The ID of the file to get access information for
* @returns Promise<ReadFileAccessResponse> - The file access information
* @example
* await sdk.file.publicRead({ fileId: "file_1234567890" });
*/
publicRead(params: ReadFileAccessRequest): Promise<ReadFileAccessResponse>;
/**
* Download a file by ID (public/token/password access)
* @param params - Public file download parameters
* @param params.fileId - The ID of the file to download
* @param params.temporaryToken - Optional temporary token
* @param params.shared - Optional shared access parameters for password-protected files
* @param params.passphrase - Optional passphrase for file decryption
* @returns Promise<Buffer> - The file content as buffer
* @example
* await sdk.file.publicDownload({ fileId: "file_1234567890", temporaryToken: "token123" });
* await sdk.file.publicDownload({ fileId: "file_1234567890", shared: { access: "password", value: "Password123!" } });
*/
publicDownload(params: PublicDownloadFileRequest): Promise<Buffer>;
}