From 0bc6a897062c8ff283c177cf22042869bdc270b1 Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Wed, 24 Jul 2024 19:04:00 +0200 Subject: [PATCH] feat(api): :sparkles: Add more Sentry logging --- app.ts | 1 + middlewares/ip-bans.ts | 2 ++ packages/database-interface/note.ts | 3 +++ server/api/oauth/authorize/index.ts | 2 ++ server/api/users/:uuid/inbox/index.ts | 4 ++++ utils/markdown.ts | 2 ++ 6 files changed, 14 insertions(+) diff --git a/app.ts b/app.ts index 7954b841..53edc52f 100644 --- a/app.ts +++ b/app.ts @@ -68,6 +68,7 @@ export const appFactory = async () => { redirect: "manual", }).catch((e) => { serverLogger.error`${e}`; + sentry?.captureException(e); serverLogger.error`The Frontend is not running or the route is not found: ${replacedUrl}`; return null; }); diff --git a/middlewares/ip-bans.ts b/middlewares/ip-bans.ts index 6042ac42..35d7d0e6 100644 --- a/middlewares/ip-bans.ts +++ b/middlewares/ip-bans.ts @@ -1,4 +1,5 @@ import { errorResponse } from "@/response"; +import { sentry } from "@/sentry"; import { createMiddleware } from "@hono/hono/factory"; import { getLogger } from "@logtape/logtape"; import type { SocketAddress } from "bun"; @@ -25,6 +26,7 @@ export const ipBans = createMiddleware(async (context, next) => { logger.error`Error while parsing banned IP "${ip}" `; logger.error`${e}`; + sentry?.captureException(e); return errorResponse( `A server error occured: ${(e as Error).message}`, diff --git a/packages/database-interface/note.ts b/packages/database-interface/note.ts index 8ea0593a..9c6c00d0 100644 --- a/packages/database-interface/note.ts +++ b/packages/database-interface/note.ts @@ -1,6 +1,7 @@ import { idValidator } from "@/api"; import { proxyUrl } from "@/response"; import { sanitizedHtmlStrip } from "@/sanitization"; +import { sentry } from "@/sentry"; import { getLogger } from "@logtape/logtape"; import type { Attachment as ApiAttachment, @@ -627,6 +628,7 @@ export class Note extends BaseInterface { const resolvedEmoji = await Emoji.fetchFromRemote(emoji).catch( (e) => { logger.error`${e}`; + sentry?.captureException(e); return null; }, ); @@ -643,6 +645,7 @@ export class Note extends BaseInterface { attachment, ).catch((e) => { logger.error`${e}`; + sentry?.captureException(e); return null; }); diff --git a/server/api/oauth/authorize/index.ts b/server/api/oauth/authorize/index.ts index 2b0f88a9..74d83b90 100644 --- a/server/api/oauth/authorize/index.ts +++ b/server/api/oauth/authorize/index.ts @@ -1,6 +1,7 @@ import { applyConfig, handleZodError, jsonOrForm } from "@/api"; import { randomString } from "@/math"; import { response } from "@/response"; +import { sentry } from "@/sentry"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { SignJWT, jwtVerify } from "jose"; @@ -136,6 +137,7 @@ export default (app: Hono) => audience: client_id, }).catch((e) => { console.error(e); + sentry?.captureException(e); return null; }); diff --git a/server/api/users/:uuid/inbox/index.ts b/server/api/users/:uuid/inbox/index.ts index 3ae9cf76..78a5ecb7 100644 --- a/server/api/users/:uuid/inbox/index.ts +++ b/server/api/users/:uuid/inbox/index.ts @@ -1,5 +1,6 @@ import { applyConfig, debugRequest, handleZodError } from "@/api"; import { errorResponse, jsonResponse, response } from "@/response"; +import { sentry } from "@/sentry"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { getLogger } from "@logtape/logtape"; @@ -183,6 +184,7 @@ export default (app: Hono) => ) .catch((e) => { logger.error`${e}`; + sentry?.captureException(e); return false; }); @@ -208,6 +210,7 @@ export default (app: Hono) => account, ).catch((e) => { logger.error`${e}`; + sentry?.captureException(e); return null; }); @@ -432,6 +435,7 @@ export default (app: Hono) => return errorResponse((e as ValidationError).message, 400); } logger.error`${e}`; + sentry?.captureException(e); return jsonResponse( { error: "Failed to process request", diff --git a/utils/markdown.ts b/utils/markdown.ts index ca48337f..32ad73d1 100644 --- a/utils/markdown.ts +++ b/utils/markdown.ts @@ -1,5 +1,6 @@ import { getLogger } from "@logtape/logtape"; import { markdownParse } from "~/classes/functions/status"; +import { sentry } from "./sentry"; export const renderMarkdownInPath = async ( path: string, @@ -15,6 +16,7 @@ export const renderMarkdownInPath = async ( (await markdownParse( (await extendedDescriptionFile.text().catch(async (e) => { await getLogger("server").error`${e}`; + sentry?.captureException(e); return ""; })) || defaultText ||