mirror of
https://github.com/misenhower/splatoon2.ink.git
synced 2026-09-28 12:16:54 -05:00
38 lines
1.2 KiB
JavaScript
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 });
|
|
}
|
|
},
|
|
};
|