@itwin/object-storage-azure
Version:
Object storage implementation using Azure Blob Storage
66 lines • 2.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BlobServiceClientWrapper = void 0;
const internal_1 = require("@itwin/object-storage-core/lib/common/internal");
const internal_2 = require("../../common/internal");
class BlobServiceClientWrapper {
_client;
constructor(client) {
this._client = client;
}
getContainerClient(containerName) {
return this._client.getContainerClient(containerName);
}
getBlobClient(reference) {
return this._client
.getContainerClient(reference.baseDirectory)
.getBlobClient((0, internal_2.buildBlobName)(reference));
}
getBlockBlobClient(reference) {
return this._client
.getContainerClient(reference.baseDirectory)
.getBlockBlobClient((0, internal_2.buildBlobName)(reference));
}
async getDirectoriesNextPage(options) {
const iterator = this._client.listContainers().byPage({
maxPageSize: options.maxPageSize,
continuationToken: options.continuationToken,
});
const response = (await iterator.next()).value;
const directories = response.containerItems.map((directory) => ({ baseDirectory: directory.name }));
const page = {
entities: directories,
next: response.continuationToken == ""
? undefined
: () => this.getDirectoriesNextPage({
maxPageSize: options.maxPageSize,
continuationToken: response.continuationToken,
}),
};
return page;
}
async getObjectsNextPage(directory, options) {
const containerClient = this._client.getContainerClient(directory.baseDirectory);
const iterator = containerClient.listBlobsFlat().byPage({
maxPageSize: options.maxPageSize,
continuationToken: options.continuationToken,
});
const response = (await iterator.next()).value;
const objects = response.segment.blobItems.map((item) => (0, internal_1.buildObjectReference)((0, internal_1.buildObjectKey)({
...directory,
objectName: item.name,
})));
const page = {
entities: objects,
next: response.continuationToken == ""
? undefined
: () => this.getObjectsNextPage(directory, {
maxPageSize: options.maxPageSize,
continuationToken: response.continuationToken,
}),
};
return page;
}
}
exports.BlobServiceClientWrapper = BlobServiceClientWrapper;
//# sourceMappingURL=BlobServiceClientWrapper.js.map