import spawn from 'nano-spawn'; import env from '../../.config/env'; import { basename } from 'node:path'; export async function b2Download(fromS3Key: string, tmpFilePath: string): Promise { await spawn('b2', ['file', 'download', `b2://${env.AWS_BUCKET}/${fromS3Key}`, tmpFilePath]); return fromS3Key; } /** * We put the hls package under `/:collection/:id/hls/` so we can use Bunny CDN's token singing * to allow token access to all the files within that folder * @see https://support.bunny.net/hc/en-us/articles/360016055099-How-to-sign-URLs-for-BunnyCDN-Token-Authentication */ export function getS3KeyTarget(collectionId: string, vodId: string, filename: string, subFolder: string | null) { if (!filename) throw new Error('third param filename was missing'); if (!vodId) throw new Error('second param vodId was missing'); if (!collectionId) throw new Error('first param collectionId was missing'); let s3KeyTarget: string; let name = basename(filename); if (subFolder) { s3KeyTarget = `${collectionId}/${vodId}/${subFolder}/${name}`; } else { s3KeyTarget = `${collectionId}/${vodId}/${name}`; } return s3KeyTarget }