Update ts-proxy.ts

This commit is contained in:
NezzDevs 2025-05-21 16:49:37 -04:00 committed by GitHub
parent 56e70eb108
commit 8387cea2cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,7 +1,7 @@
import { setResponseHeaders } from 'h3';
import { getCachedSegment } from './m3u8-proxy';
export default defineEventHandler(async (event) => {
// Handle CORS preflight requests
if (isPreflightRequest(event)) return handleCors(event, {});
const url = getQuery(event).url as string;
@ -25,10 +25,23 @@ export default defineEventHandler(async (event) => {
}
try {
const cachedSegment = getCachedSegment(url);
if (cachedSegment) {
setResponseHeaders(event, {
'Content-Type': cachedSegment.headers['content-type'] || 'video/mp2t',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Methods': '*',
'Cache-Control': 'public, max-age=3600'
});
return cachedSegment.data;
}
const response = await globalThis.fetch(url, {
method: 'GET',
headers: {
// Default User-Agent (from src/utils/headers.ts)
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0',
...(headers as HeadersInit),
}
@ -38,16 +51,14 @@ export default defineEventHandler(async (event) => {
throw new Error(`Failed to fetch TS file: ${response.status} ${response.statusText}`);
}
// Set appropriate headers for each video segment
setResponseHeaders(event, {
'Content-Type': 'video/mp2t',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Methods': '*',
'Cache-Control': 'public, max-age=3600' // Allow caching of TS segments
'Cache-Control': 'public, max-age=3600'
});
// Return the binary data directly
return new Uint8Array(await response.arrayBuffer());
} catch (error: any) {
console.error('Error proxying TS file:', error);
@ -56,4 +67,4 @@ export default defineEventHandler(async (event) => {
statusMessage: error.message || 'Error proxying TS file'
}));
}
});
});