buster/packages/server-shared/src/screenshots/methods/get-metric-screenshot.ts

32 lines
1021 B
TypeScript
Raw Normal View History

2025-10-09 02:57:12 +08:00
import { z } from 'zod';
import { BrowserParamsContextSchema, browserLogin } from './browser-login';
import { createHrefFromLink } from './create-href-from-link';
2025-10-09 12:47:17 +08:00
import { takeScreenshot } from './take-screenshot';
2025-10-09 02:57:12 +08:00
export const GetMetricScreenshotHandlerArgsSchema = z
.object({
metricId: z.string().uuid('Metric ID must be a valid UUID'),
version_number: z.number().optional(),
})
.extend(BrowserParamsContextSchema.shape);
export type GetMetricScreenshotHandlerArgs = z.infer<typeof GetMetricScreenshotHandlerArgsSchema>;
export const getMetricScreenshot = async (
args: GetMetricScreenshotHandlerArgs
): Promise<Buffer<ArrayBufferLike>> => {
const { result: screenshotBuffer } = await browserLogin({
...args,
fullPath: createHrefFromLink({
to: '/screenshots/metrics/$metricId/content' as const,
params: { metricId: args.metricId },
search: {
version_number: args.version_number,
},
}),
2025-10-09 12:47:17 +08:00
callback: takeScreenshot,
2025-10-09 02:57:12 +08:00
});
return screenshotBuffer;
};