media-exporter-processor
Version:
Media processing API with thumbnail generation and cloud storage
42 lines • 1.92 kB
TypeScript
import type { ThumbnailResult } from "./ThumbnailService";
export interface UploadConfig {
accessKeyId: string;
secretAccessKey: string;
endpoint: string;
bucket: string;
region?: string;
}
export interface UploadResult {
key: string;
url: string;
size: number;
}
export interface VideoUploadResult {
video: UploadResult;
thumbnails: Record<number, UploadResult>;
duration: number;
}
export interface ImageUploadResult {
image: UploadResult;
thumbnails: Record<number, UploadResult>;
}
export declare class UploadService {
private s3Client;
private config;
constructor(config: UploadConfig);
uploadVideo(videoBuffer: Buffer, filename: string, prefix?: string, metadata?: Record<string, string>): Promise<UploadResult>;
uploadThumbnails(thumbnails: ThumbnailResult[], videoKey: string, prefix?: string): Promise<Record<number, UploadResult>>;
uploadImage(imageBuffer: Buffer, filename: string, prefix?: string, metadata?: Record<string, string>): Promise<UploadResult>;
uploadVideoWithThumbnails(videoBuffer: Buffer, filename: string, duration: number, thumbnails: ThumbnailResult[], prefix?: string, metadata?: Record<string, string>): Promise<VideoUploadResult>;
uploadImageWithThumbnails(imageBuffer: Buffer, filename: string, thumbnails: ThumbnailResult[], prefix?: string, metadata?: Record<string, string>): Promise<ImageUploadResult>;
deleteFile(key: string): Promise<void>;
deleteVideoWithThumbnails(videoKey: string, thumbnailKeys: string[]): Promise<void>;
private getPublicUrl;
getPresignedUrl(key: string, expiresIn?: number): Promise<string>;
getPresignedUploadUrl(key: string, contentType: string, expiresIn?: number): Promise<string>;
/**
* Download a file from S3 and return it as a Buffer
*/
downloadFile(key: string): Promise<Buffer>;
}
//# sourceMappingURL=UploadService.d.ts.map