diff --git a/apps/server/src/api/v2/chats/[id]/screenshot/GET.ts b/apps/server/src/api/v2/chats/[id]/screenshot/GET.ts index 35e8ad64d..7da6f26d5 100644 --- a/apps/server/src/api/v2/chats/[id]/screenshot/GET.ts +++ b/apps/server/src/api/v2/chats/[id]/screenshot/GET.ts @@ -16,7 +16,6 @@ const app = new Hono().get( zValidator('query', GetChatScreenshotQuerySchema), async (c) => { const chatId = c.req.valid('param').id; - const search = c.req.valid('query'); const user = c.get('busterUser'); const chat = await getChatById(chatId); @@ -40,16 +39,15 @@ const app = new Hono().get( } try { + const type = 'png' as const; const screenshotBuffer = await getChatScreenshot({ chatId, - width: search.width, - height: search.height, - type: search.type, accessToken: c.get('accessToken'), organizationId: chat.organizationId, + type, }); - return createImageResponse(screenshotBuffer, search.type); + return createImageResponse(screenshotBuffer, type); } catch (error) { console.error('Failed to generate chat screenshot URL', { chatId, diff --git a/apps/server/src/api/v2/dashboards/[id]/screenshot/GET.ts b/apps/server/src/api/v2/dashboards/[id]/screenshot/GET.ts index 38abf4eff..1329e14be 100644 --- a/apps/server/src/api/v2/dashboards/[id]/screenshot/GET.ts +++ b/apps/server/src/api/v2/dashboards/[id]/screenshot/GET.ts @@ -43,14 +43,16 @@ const app = new Hono() } try { + const type = 'png' as const; const screenshotBuffer = await getDashboardScreenshot({ ...search, dashboardId, accessToken: c.get('accessToken'), organizationId: dashboard.organizationId, + type, }); - return createImageResponse(screenshotBuffer, search.type); + return createImageResponse(screenshotBuffer, type); } catch (error) { console.error('Failed to generate chat screenshot URL', { dashboardId, diff --git a/apps/server/src/api/v2/metric_files/[id]/screenshot/GET.ts b/apps/server/src/api/v2/metric_files/[id]/screenshot/GET.ts index 71cddf15f..249d2f566 100644 --- a/apps/server/src/api/v2/metric_files/[id]/screenshot/GET.ts +++ b/apps/server/src/api/v2/metric_files/[id]/screenshot/GET.ts @@ -18,7 +18,7 @@ const app = new Hono() zValidator('query', GetMetricScreenshotQuerySchema), async (c) => { const metricId = c.req.valid('param').id; - const { version_number, width, height, type } = c.req.valid('query'); + const { version_number } = c.req.valid('query'); const user = c.get('busterUser'); const metric = await getMetricFileById(metricId); @@ -42,14 +42,13 @@ const app = new Hono() } try { + const type = 'png' as const; const screenshotBuffer = await getMetricScreenshot({ metricId, - width, - height, version_number, - type, accessToken: c.get('accessToken'), organizationId: metric.organizationId, + type, }); return createImageResponse(screenshotBuffer, type); diff --git a/apps/server/src/api/v2/reports/[id]/index.ts b/apps/server/src/api/v2/reports/[id]/index.ts index 0b355eed7..d639fa164 100644 --- a/apps/server/src/api/v2/reports/[id]/index.ts +++ b/apps/server/src/api/v2/reports/[id]/index.ts @@ -1,13 +1,8 @@ import { Hono } from 'hono'; import GET from './GET'; import PUT from './PUT'; -import SCREENSHOT from './screenshot'; import SHARING from './sharing'; -const app = new Hono() - .route('/', GET) - .route('/', PUT) - .route('/sharing', SHARING) - .route('/screenshot', SCREENSHOT); +const app = new Hono().route('/', GET).route('/', PUT).route('/sharing', SHARING); export default app; diff --git a/apps/server/src/api/v2/reports/[id]/screenshot/GET.ts b/apps/server/src/api/v2/reports/[id]/screenshot/GET.ts deleted file mode 100644 index f055f451e..000000000 --- a/apps/server/src/api/v2/reports/[id]/screenshot/GET.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { checkPermission } from '@buster/access-controls'; -import { getAssetScreenshotBucketKey, getReportFileById } from '@buster/database/queries'; -import { getAssetScreenshotSignedUrl } from '@buster/search'; -import { - GetReportScreenshotParamsSchema, - type GetScreenshotResponse, -} from '@buster/server-shared/screenshots'; -import { zValidator } from '@hono/zod-validator'; -import { Hono } from 'hono'; -import { HTTPException } from 'hono/http-exception'; - -const app = new Hono().get('/', zValidator('param', GetReportScreenshotParamsSchema), async (c) => { - const reportId = c.req.valid('param').id; - const user = c.get('busterUser'); - - const report = await getReportFileById({ reportId, userId: user.id }); - - if (!report) { - throw new HTTPException(404, { message: 'Report not found' }); - } - - const existingKey = await getAssetScreenshotBucketKey({ - assetType: 'report_file', - assetId: reportId, - }); - - if (!existingKey) { - const result: GetScreenshotResponse = { - success: false, - error: 'Screenshot not found', - }; - return c.json(result); - } - - const permission = await checkPermission({ - userId: user.id, - assetId: reportId, - assetType: 'report_file', - requiredRole: 'can_view', - workspaceSharing: report.workspace_sharing, - organizationId: report.organization_id, - }); - - if (!permission.hasAccess) { - throw new HTTPException(403, { - message: 'You do not have permission to view this report', - }); - } - - try { - const signedUrl = await getAssetScreenshotSignedUrl({ - key: existingKey, - organizationId: report.organization_id, - }); - - const result: GetScreenshotResponse = { - success: true, - url: signedUrl, - }; - return c.json(result); - } catch (error) { - console.error('Failed to generate report screenshot URL', { - reportId, - error, - }); - } - - const response: GetScreenshotResponse = { - success: false, - error: 'Failed to generate screenshot URL', - }; - return c.json(response); -}); - -export default app; diff --git a/apps/server/src/api/v2/reports/[id]/screenshot/index.ts b/apps/server/src/api/v2/reports/[id]/screenshot/index.ts deleted file mode 100644 index 1a44872c8..000000000 --- a/apps/server/src/api/v2/reports/[id]/screenshot/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Hono } from 'hono'; -import GET from './GET'; - -const app = new Hono().route('/', GET); - -export default app;