Files
splatoon2.ink/workers/screenshots/index.mjs

38 lines
1.2 KiB
JavaScript

import BrowserRunRenderer from '../../src/app/screenshots/BrowserRunRenderer.js';
import ScreenshotGenerator from '../../src/app/screenshots/ScreenshotGenerator.js';
// Local capture-only entry point: no scheduler, buckets, or social clients.
export default {
async fetch(request, env) {
let params = new URL(request.url).searchParams;
let url = params.get('url');
if (request.method !== 'GET')
return new Response('Use GET with a url query parameter.', { status: 405 });
try {
if (!url || !['https:', 'http:'].includes(new URL(url).protocol))
return new Response('Provide a full HTTP(S) screenshot page URL in ?url=.', { status: 400 });
} catch {
return new Response('Invalid screenshot page URL.', { status: 400 });
}
let screenshots = new ScreenshotGenerator(new BrowserRunRenderer(env.BROWSER));
try {
let result = await screenshots.capture({ url });
return new Response(result.image, {
headers: {
'Content-Type': result.type,
'Cache-Control': 'no-store',
},
});
} catch (error) {
console.error(error);
return new Response(error.message, { status: 502 });
}
},
};