UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

72 lines (59 loc) 1.59 kB
import { BinaryRetrievalOptions } from 'scrivito_sdk/client/binary_retrieval_options'; import { cmsRestApi } from 'scrivito_sdk/client/cms_rest_api'; import { asBackendObjSpaceId } from 'scrivito_sdk/client/obj_space_id'; import { BatchRetrieval } from 'scrivito_sdk/common'; import { TransformationDefinition } from 'scrivito_sdk/models'; export type BackendBinaryData = | PublicBackendBinaryData | PrivateBackendBinaryData; interface PublicBackendBinaryData { public_access: { get: { url: string; }; }; private_access?: { get: { url: string; }; }; } interface PrivateBackendBinaryData { public_access: { get: { url: string; }; }; private_access: { get: { url: string; }; }; } interface BinaryRequest { id: string; transformation?: TransformationDefinition; access_via?: string; } const batchRetrieval = new BatchRetrieval<BinaryRequest, BackendBinaryData>( async (blobs) => { const { results } = (await cmsRestApi.get('blobs/mget', { blobs })) as { results: Array<unknown>; }; return results.map((result) => result as unknown as BackendBinaryData); } ); export function retrieveBinaryUrls( binaryId: string, transformation?: TransformationDefinition, options?: BinaryRetrievalOptions ): Promise<BackendBinaryData> { const blob: BinaryRequest = { id: binaryId }; if (transformation) { blob.transformation = transformation; } if (options?.accessVia) { blob.access_via = asBackendObjSpaceId(options.accessVia); } return batchRetrieval.retrieve(blob); }