diff --git a/packages/service-clients/odsp-client/api-report/odsp-client.alpha.api.md b/packages/service-clients/odsp-client/api-report/odsp-client.alpha.api.md index 8a0462d5c31d..5972f0bb8e70 100644 --- a/packages/service-clients/odsp-client/api-report/odsp-client.alpha.api.md +++ b/packages/service-clients/odsp-client/api-report/odsp-client.alpha.api.md @@ -10,6 +10,7 @@ export type IOdspAudience = IServiceAudience; // @beta export interface IOdspFluidContainer extends IFluidContainer { attach(props?: ContainerAttachProps): Promise; + uploadBlob(blob: ArrayBufferLike): Promise>; } // @beta diff --git a/packages/service-clients/odsp-client/api-report/odsp-client.beta.api.md b/packages/service-clients/odsp-client/api-report/odsp-client.beta.api.md index fc893e97c251..5f34a2b56f97 100644 --- a/packages/service-clients/odsp-client/api-report/odsp-client.beta.api.md +++ b/packages/service-clients/odsp-client/api-report/odsp-client.beta.api.md @@ -10,6 +10,7 @@ export type IOdspAudience = IServiceAudience; // @beta export interface IOdspFluidContainer extends IFluidContainer { attach(props?: ContainerAttachProps): Promise; + uploadBlob(blob: ArrayBufferLike): Promise>; } // @beta diff --git a/packages/service-clients/odsp-client/src/interfaces.ts b/packages/service-clients/odsp-client/src/interfaces.ts index 2096dd4333d7..620a33bd445c 100644 --- a/packages/service-clients/odsp-client/src/interfaces.ts +++ b/packages/service-clients/odsp-client/src/interfaces.ts @@ -5,6 +5,7 @@ import type { IConfigProviderBase, + IFluidHandle, ITelemetryBaseLogger, } from "@fluidframework/core-interfaces"; import type { @@ -97,6 +98,12 @@ export interface IOdspFluidContainer< * @returns A promise which resolves when the attach is complete, with the string identifier of the container. */ attach(props?: ContainerAttachProps): Promise; + + /** + * Upload a blob of data. + * @param blob - The blob to upload to the ODSP service. + */ + uploadBlob(blob: ArrayBufferLike): Promise>; } /** diff --git a/packages/service-clients/odsp-client/src/odspClient.ts b/packages/service-clients/odsp-client/src/odspClient.ts index 44459bd74d50..db8690c54095 100644 --- a/packages/service-clients/odsp-client/src/odspClient.ts +++ b/packages/service-clients/odsp-client/src/odspClient.ts @@ -24,6 +24,7 @@ import type { ContainerAttachProps, ContainerSchema } from "@fluidframework/flui import { createDOProviderContainerRuntimeFactory, createFluidContainer, + isInternalFluidContainer, } from "@fluidframework/fluid-static/internal"; import { OdspDocumentServiceFactory, @@ -155,6 +156,9 @@ export class OdspClient { const fluidContainer = await createFluidContainer({ container, }); + if (!isInternalFluidContainer(fluidContainer)) { + throw new Error("Fluid container is not internal"); + } const services = await this.getContainerServices(container); return { container: fluidContainer, services }; } @@ -227,6 +231,9 @@ export class OdspClient { return resolvedUrl.itemId; }; const fluidContainer = await createFluidContainer({ container }); + if (!isInternalFluidContainer(fluidContainer)) { + throw new Error("Fluid container is not internal"); + } fluidContainer.attach = attach; return fluidContainer; }