// @ownzones import { MxfFileReader, S3ByteProvider } from '@ownzones/imf'; import { AncillaryDataType } from '@ownzones/imf/dist/lib/st0377/writer/mxf-file-writer'; import { fileLocatorFactoryFromLocation, S3FileLocator } from '@ownzones/locators'; // lib import { getFile } from './connect-api'; import { Nullable } from '../utils/types'; export interface IAncillaryResource { fileId: string; type: AncillaryDataType; fileName: string; orgSlug: string; } export async function getAncillaryResource(options: IAncillaryResource): Promise> { const { fileId, type, fileName, orgSlug, } = options; const file = await getFile(fileId, orgSlug); const fileLocator = fileLocatorFactoryFromLocation((file.fileLocator as S3FileLocator).url) as unknown as S3FileLocator; const extension = fileLocator.url.split('.').pop()?.toLowerCase(); if (file) { if (extension === 'mxf') { const mxfReader = new MxfFileReader(new S3ByteProvider(fileLocator.bucket, fileLocator.key)); return mxfReader.extractAncillaryResourceByNameAndType(fileName, type); } if (extension === 'xml') { const checkKeyPath = fileLocator.getCurrentFolder(); const locator = fileLocatorFactoryFromLocation(`s3://${checkKeyPath}/${fileName}`); const info = await locator.getInfo(); if (info && info.exists) { return locator.getContent(); } } } return null; }