UNPKG

koneksi-ts-sdk

Version:

A JS/TS SDK for interacting with Koneksi API services

184 lines (183 loc) 8.25 kB
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>; }