mirror of
https://github.com/ZSCGR/CloudFlare-ImgBed.git
synced 2026-08-20 23:53:43 +08:00
43 lines
1.6 KiB
JavaScript
43 lines
1.6 KiB
JavaScript
import { readIndex } from "../../../utils/indexManager";
|
|
import { getDatabase } from "../../../utils/databaseAdapter.js";
|
|
import { buildFileMetadataForManagement, createMetadataViewContext } from "../../../utils/metadata/metadataView.js";
|
|
|
|
export async function onRequest(context) {
|
|
const { request } = context;
|
|
const url = new URL(request.url);
|
|
const ip = url.searchParams.get('ip');
|
|
let start = parseInt(url.searchParams.get('start'), 10) || 0;
|
|
let count = parseInt(url.searchParams.get('count'), 10) || 20;
|
|
|
|
if (!ip) {
|
|
return new Response(JSON.stringify({ error: 'Missing ip parameter' }), {
|
|
status: 400,
|
|
headers: { "Content-Type": "application/json" }
|
|
});
|
|
}
|
|
|
|
start = Math.max(0, start);
|
|
count = Math.max(1, count);
|
|
|
|
const db = getDatabase(context.env);
|
|
const metadataViewContext = await createMetadataViewContext(db, context.env);
|
|
const allRecords = await readIndex(context, { count: -1, includeSubdirFiles: true });
|
|
const matchingFiles = allRecords.files
|
|
.filter(item => item.metadata?.UploadIP === ip)
|
|
.map(item => ({
|
|
...item,
|
|
metadata: item.metadata
|
|
}));
|
|
const files = await Promise.all(matchingFiles.map(async item => ({
|
|
...item,
|
|
metadata: await buildFileMetadataForManagement(db, context.env, item.metadata, metadataViewContext)
|
|
})));
|
|
|
|
return new Response(JSON.stringify({
|
|
data: files.slice(start, start + count),
|
|
total: files.length,
|
|
}), {
|
|
headers: { "Content-Type": "application/json" }
|
|
});
|
|
}
|