Files
upage-git/app/routes/api.netlify.sites.$siteId.cache.ts
2025-09-24 17:02:44 +08:00

54 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { type ActionFunctionArgs } from '@remix-run/node';
import { requireAuth } from '~/lib/.server/auth';
import { getNetlifyConnectionSettings } from '~/lib/.server/connectionSettings';
import { errorResponse, successResponse } from '~/utils/api-response';
import { createScopedLogger } from '~/utils/logger';
const logger = createScopedLogger('api.netlify.sites.cache');
export async function action({ request, params }: ActionFunctionArgs) {
const authResult = await requireAuth(request, { isApi: true });
if (authResult instanceof Response) {
return authResult;
}
const userId = authResult.userInfo?.sub;
if (!userId) {
return errorResponse(401, '用户未登录');
}
const { siteId } = params;
if (!siteId) {
return errorResponse(400, '缺少站点ID');
}
try {
const connectionSettings = await getNetlifyConnectionSettings(userId);
if (!connectionSettings) {
return errorResponse(401, '未连接到Netlify请先设置访问令牌');
}
const { token } = connectionSettings;
const response = await fetch(`https://api.netlify.com/api/v1/sites/${siteId}/cache`, {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
},
});
if (!response.ok) {
const errorText = await response.text();
logger.error(`清除站点缓存失败: ${response.status} ${errorText}`);
return errorResponse(response.status, '清除站点缓存失败');
}
logger.info(`用户 ${userId} 成功清除了站点 ${siteId} 的缓存`);
return successResponse({}, '站点缓存清除成功');
} catch (error) {
logger.error('清除站点缓存失败:', error);
return errorResponse(500, '清除站点缓存失败');
}
}