@terrxo/thumbnail-generator
v1.1.1
Published
Client library for the thumbnail generation API
Downloads
18
Maintainers
Readme
Thumbnail Generator Client
A TypeScript client library for the thumbnail generation API built with Hono and Cloudflare Workers.
Installation
npm install @your-org/thumbnail-generator-clientUsage
Basic Usage
import { createThumbnailClient } from "@your-org/thumbnail-generator-client";
// Create a client instance
const client = createThumbnailClient({
baseUrl: "https://your-api.your-domain.workers.dev", // Optional if THUMBNAIL_API_URL env var is set
authToken: "your-auth-token",
});
// Generate thumbnails
const result = await client.generateThumbnails({
fileUrl: "https://example.com/image.jpg",
fileType: "image",
thumbnails: [
{
width: 200,
height: 200,
fit: "cover",
quality: 80,
format: "webp",
uploadUrl: "https://example.com/upload/thumbnail-200x200.webp",
},
{
width: 400,
height: 400,
fit: "contain",
quality: 90,
format: "webp",
uploadUrl: "https://example.com/upload/thumbnail-400x400.webp",
},
],
});
console.log(result);Environment Variables
You can set the base URL using an environment variable:
THUMBNAIL_API_URL=https://your-api.your-domain.workers.devHealth Check
const healthStatus = await client.healthCheck();
console.log(healthStatus);
// Output: { status: "healthy", service: "thumbnail-generator", endpoints: ["/generate-thumbnails"] }Error Handling
try {
const result = await client.generateThumbnails({
fileUrl: "https://example.com/image.jpg",
fileType: "image",
thumbnails: [
{
width: 200,
height: 200,
fit: "cover",
quality: 80,
format: "webp",
uploadUrl: "https://example.com/upload/thumbnail.webp",
},
],
});
} catch (error) {
console.error("Failed to generate thumbnails:", error.message);
}API Reference
createThumbnailClient(config)
Creates a new client instance.
Parameters
config(ThumbnailClientConfig): Configuration objectbaseUrl(string, optional): Base URL of the API. Falls back toTHUMBNAIL_API_URLenvironment variableauthToken(string, required): Authentication token for the API
Returns
An object with the following methods:
client.generateThumbnails(request)
Generates thumbnails for a file.
Parameters
request(ThumbnailRequest): The thumbnail generation requestfileUrl(string): URL of the file to generate thumbnails forfileType("image" | "video"): Type of the filethumbnails(Array): Array of thumbnail specificationswidth(number): Width of the thumbnailheight(number): Height of the thumbnailfit("cover" | "contain"): How to fit the image in the dimensionsquality(number): Quality of the output (0-100)format("webp"): Output formatuploadUrl(string): URL where the thumbnail should be uploaded
Returns
Promise: The API response
client.healthCheck()
Checks if the API is healthy.
Returns
Promise<{ status: string, service: string, endpoints: string[] }>: Health status
client.raw
Access to the raw Hono client for advanced usage.
Types
ThumbnailRequest
interface ThumbnailRequest {
fileUrl: string;
fileType: "image" | "video";
thumbnails: Array<{
width: number;
height: number;
fit: "cover" | "contain";
quality: number;
format: "webp";
uploadUrl: string;
}>;
}ThumbnailResponse
interface ThumbnailResponse {
success: boolean;
message?: string;
error?: string;
}ThumbnailClientConfig
interface ThumbnailClientConfig {
baseUrl?: string;
authToken: string;
}Development
Building the Client
npm run build:clientDeploying the Worker
npm run deployLicense
MIT
Contributing
Please read our contributing guidelines before submitting pull requests.
