Files
random-background-api/src/api/random.js
shumengya f45a0068a2 chore: 完善开源项目文档与结构,移除敏感原始图片
- 重写 README.md,添加在线体验、API 文档、部署指南、技术栈等
- 添加 MIT LICENSE
- 添加 CONTRIBUTING.md 贡献指南
- 添加 GitHub Issue/PR 模板
- 完善 .gitignore,防止原始图片和敏感文件误提交
- 从 git 中移除 25 个原始图片文件(.png/.jpg/非序号 webp)
- 项目结构迁移:functions/ -> src/,根目录静态文件 -> public/
- 添加 wrangler.toml 与 package.json 配置
2026-06-06 20:52:59 +08:00

37 lines
1.3 KiB
JavaScript

import { buildAssetUrl, detectVariant, getVariantPayload, loadManifest, pickRandom } from '../lib/background.js';
/** @param {Request} request @param {{ ASSETS?: { fetch(input: RequestInfo, init?: RequestInit): Promise<Response> } }} env */
export async function handleRandomGet(request, env) {
const url = new URL(request.url);
const format = (url.searchParams.get('format') || 'redirect').toLowerCase();
const manifest = await loadManifest(request, env);
const variant = detectVariant(request);
const { folder, images } = getVariantPayload(manifest, variant);
if (!images.length) {
return Response.json(
{ error: 'no images available', variant, folder },
{ status: 404, headers: { 'Cache-Control': 'no-store, max-age=0', 'Access-Control-Allow-Origin': '*' } },
);
}
const filename = pickRandom(images);
const assetUrl = buildAssetUrl(request, folder, filename);
if (format === 'json') {
return Response.json(
{ variant, folder, filename, url: assetUrl, count: images.length },
{ headers: { 'Cache-Control': 'no-store, max-age=0', 'Access-Control-Allow-Origin': '*' } },
);
}
return new Response(null, {
status: 302,
headers: {
Location: assetUrl,
'Cache-Control': 'no-store, max-age=0',
'Access-Control-Allow-Origin': '*',
},
});
}