@itwin/object-storage-s3
Version:
Object storage implementation base for S3 compatible providers
52 lines • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.S3ServerStorageBindings = void 0;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
const client_s3_1 = require("@aws-sdk/client-s3");
const client_sts_1 = require("@aws-sdk/client-sts");
const internal_1 = require("@itwin/cloud-agnostic-core/lib/internal");
const object_storage_core_1 = require("@itwin/object-storage-core");
const common_1 = require("../common");
const internal_2 = require("../common/internal");
const S3PresignedUrlProvider_1 = require("./S3PresignedUrlProvider");
const S3ServerStorage_1 = require("./S3ServerStorage");
const S3TransferConfigProvider_1 = require("./S3TransferConfigProvider");
const wrappers_1 = require("./wrappers");
/* eslint-enable @typescript-eslint/indent */
class S3ServerStorageBindings extends object_storage_core_1.ServerStorageDependency {
dependencyName = common_1.Constants.storageType;
register(container, config) {
if (!config.accessKey)
throw new internal_1.ConfigError("accessKey");
if (!config.bucket)
throw new internal_1.ConfigError("bucket");
if (!config.baseUrl)
throw new internal_1.ConfigError("baseUrl");
if (!config.region)
throw new internal_1.ConfigError("region");
if (!config.roleArn)
throw new internal_1.ConfigError("roleArn");
if (!config.secretKey)
throw new internal_1.ConfigError("secretKey");
if (!config.stsBaseUrl)
throw new internal_1.ConfigError("stsBaseUrl");
container.registerInstance(common_1.Types.S3Server.config, config);
container.registerFactory(object_storage_core_1.Types.Server.serverStorage, (c) => new S3ServerStorage_1.S3ServerStorage(c.resolve(wrappers_1.S3ClientWrapper), c.resolve(object_storage_core_1.Types.Server.presignedUrlProvider), c.resolve(object_storage_core_1.Types.Server.transferConfigProvider)));
container.registerInstance(client_s3_1.S3Client, (0, internal_2.createS3Client)(config));
container.registerInstance(client_sts_1.STSClient, (0, internal_2.createStsClient)(config));
container.registerInstance(common_1.Types.bucket, config.bucket);
container.registerFactory(wrappers_1.StsWrapper, (c) => {
return new wrappers_1.StsWrapper(c.resolve(client_sts_1.STSClient));
});
container.registerFactory(wrappers_1.S3ClientWrapper, (c) => {
return new wrappers_1.S3ClientWrapper(c.resolve(client_s3_1.S3Client), c.resolve(common_1.Types.bucket));
});
container.registerFactory(object_storage_core_1.Types.Server.presignedUrlProvider, (c) => new S3PresignedUrlProvider_1.S3PresignedUrlProvider(c.resolve(client_s3_1.S3Client), c.resolve(common_1.Types.S3Server.config)));
container.registerFactory(object_storage_core_1.Types.Server.transferConfigProvider, (c) => new S3TransferConfigProvider_1.S3TransferConfigProvider(c.resolve(wrappers_1.StsWrapper), c.resolve(common_1.Types.S3Server.config)));
}
}
exports.S3ServerStorageBindings = S3ServerStorageBindings;
//# sourceMappingURL=S3ServerStorageBindings.js.map