37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
|
|
import { logger } from '$lib/core/utils/logger';
|
||
|
|
import { json, error } from '@sveltejs/kit';
|
||
|
|
import type { RequestHandler } from './$types';
|
||
|
|
import { env } from '$env/dynamic/public';
|
||
|
|
import { verifyAuthToken } from '$lib/server/auth';
|
||
|
|
|
||
|
|
// Adv videos are served by the same taobin_image service as menu images.
|
||
|
|
const ADV_API_BASE = env.PUBLIC_POST_IMAGE;
|
||
|
|
|
||
|
|
// List the adv .mp4 files currently on a country's FTP folder (for preview).
|
||
|
|
export const POST: RequestHandler = async ({ request }) => {
|
||
|
|
try {
|
||
|
|
await verifyAuthToken(request);
|
||
|
|
|
||
|
|
const { country } = await request.json();
|
||
|
|
if (!country || typeof country !== 'string') {
|
||
|
|
throw error(400, 'Missing country');
|
||
|
|
}
|
||
|
|
|
||
|
|
const endpoint = `${ADV_API_BASE}/adv/list/${encodeURIComponent(country)}`;
|
||
|
|
const response = await fetch(endpoint, { method: 'POST' });
|
||
|
|
|
||
|
|
if (!response.ok) {
|
||
|
|
const errorData = await response.json().catch(() => ({ detail: response.statusText }));
|
||
|
|
throw error(response.status, errorData.detail || 'Failed to list adv videos');
|
||
|
|
}
|
||
|
|
|
||
|
|
return json(await response.json());
|
||
|
|
} catch (err) {
|
||
|
|
logger.error('[Adv List Proxy] Error:', err);
|
||
|
|
if (err && typeof err === 'object' && 'status' in err) {
|
||
|
|
throw err;
|
||
|
|
}
|
||
|
|
throw error(500, err instanceof Error ? err.message : 'Internal server error');
|
||
|
|
}
|
||
|
|
};
|