Refactor transcript fetching (#5)

* refactor: share transcript fetch helper

* Update lib/fetchTranscript.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update lib/fetchTranscript.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
2025-06-10 00:34:34 +02:00
committed by GitHub
parent 247616cda8
commit 8464ac9c52
3 changed files with 34 additions and 70 deletions

View File

@ -2,6 +2,7 @@
import { NextApiRequest, NextApiResponse } from "next";
import { fetchAndParseCsv } from "../../../lib/csvFetcher";
import { prisma } from "../../../lib/prisma";
import { fetchTranscriptContent } from "../../../lib/fetchTranscript";
interface SessionCreateData {
id: string;
@ -11,41 +12,6 @@ interface SessionCreateData {
[key: string]: unknown;
}
/**
* Fetches transcript content from a URL with optional authentication
* @param url The URL to fetch the transcript from
* @param username Optional username for Basic Auth
* @param password Optional password for Basic Auth
* @returns The transcript content or null if fetching fails
*/
async function fetchTranscriptContent(
url: string,
username?: string,
password?: string
): Promise<string | null> {
try {
const authHeader =
username && password
? "Basic " + Buffer.from(`${username}:${password}`).toString("base64")
: undefined;
const response = await fetch(url, {
headers: authHeader ? { Authorization: authHeader } : {},
});
if (!response.ok) {
process.stderr.write(
`Error fetching transcript: ${response.statusText}\n`
);
return null;
}
return await response.text();
} catch (error) {
process.stderr.write(`Failed to fetch transcript: ${error}\n`);
return null;
}
}
export default async function handler(
req: NextApiRequest,
res: NextApiResponse