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
text/typescript
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);
}