import { addFeed, getFeedForUser, syncFeed, toMeRssFeedDto } from "#server/service/rss"; import { RssUrlUnsafeError } from "#server/utils/rss-url"; export default defineWrappedResponseHandler(async (event) => { const user = await event.context.auth.requireUser(); const body = await readBody<{ feedUrl: string }>(event); try { const created = await addFeed(user.id, body.feedUrl); if (!created) { throw createError({ statusCode: 500, statusMessage: "订阅创建失败" }); } await syncFeed(created.id); const row = await getFeedForUser(user.id, created.id); if (!row) { throw createError({ statusCode: 500, statusMessage: "订阅创建后读取失败" }); } return R.success({ feed: toMeRssFeedDto(row) }); } catch (e) { if (e instanceof RssUrlUnsafeError) { throw createError({ statusCode: 400, statusMessage: e.message }); } throw e; } });