Beispiel #1
0
        public S3ObjectStoreTest()
        {
            _mockS3Client = new Mock <IAmazonS3>();
            _settings     = new S3ObjectStoreSettings
            {
                BucketName = "mybucket",
                KeyPrefix  = "keyprefix"
            };
            _mockKeyConverter = new Mock <IKeyConverter <int> >();
            _store            = new S3ObjectStore <TestObject, int>(_mockS3Client.Object, _settings, _mockKeyConverter.Object);

            _mockKeyConverter.Setup(x => x.ToString(It.IsAny <int>())).Returns <int>(x => x.ToString());
            _mockKeyConverter.Setup(x => x.FromString(It.IsAny <string>())).Returns <string>(x => int.Parse(x));
        }
        public static IServiceCollection AddS3ObjectStores(this IServiceCollection services, S3Settings settings)
        {
            services.AddSingleton <GuidKeyConverter>(_ => new GuidKeyConverter());
            services.AddSingleton <StringKeyConverter>(_ => new StringKeyConverter());

            services.AddSingleton <IAmazonS3>(
                _ => S3ClientFactory.CreateClient(settings.Key, settings.Secret, settings.Url));

            services.AddSingleton <IS3ObjectStore <Message, Guid> >(
                provider =>
            {
                var s3Client      = provider.GetService <IAmazonS3>();
                var keyConverter  = provider.GetService <GuidKeyConverter>();
                var storeSettings = new S3ObjectStoreSettings
                {
                    BucketName = settings.BucketName,
                    KeyPrefix  = nameof(Message)
                };

                return(new S3ObjectStore <Message, Guid>(s3Client, storeSettings, keyConverter));
            });

            services.AddSingleton <IS3ObjectStore <MessageStatusContainer, string> >(
                provider =>
            {
                var s3Client      = provider.GetService <IAmazonS3>();
                var keyConverter  = provider.GetService <StringKeyConverter>();
                var storeSettings = new S3ObjectStoreSettings
                {
                    BucketName = settings.BucketName,
                    KeyPrefix  = nameof(MessageStatusContainer)
                };

                return(new S3ObjectStore <MessageStatusContainer, string>(s3Client, storeSettings, keyConverter));
            });
            return(services);
        }