Exemple #1
0
        /// <summary>
        /// Build a amazon s3 client <see cref="Amazon.S3.IAmazonS3"/>
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public IAmazonS3 BuildClient(S3ClientConfiguration configuration)
        {
            _logger.LogDebug("Create client with configuration:{0}", configuration.ToString());
            IAmazonS3 client = new AmazonS3Client(configuration.AccessKeyId, configuration.SecretAccessKey, configuration.Config);

            return(client);
        }
        /// <summary>
        /// Ctor
        /// </summary>
        /// <param name="logger"></param>
        /// <param name="configuration"></param>
        /// <param name="s3ClientBuilder"></param>
        public DefaultS3ClientPool(
            ILogger <DefaultS3ClientPool> logger,
            S3ClientConfiguration configuration,
            IS3ClientBuilder s3ClientBuilder)
        {
            _logger = logger;

            _configuration   = configuration;
            _s3ClientBuilder = s3ClientBuilder;

            _clients = new ConcurrentDictionary <int, IAmazonS3>();
        }
        /// <summary>
        /// Create s3 client pool by configuration
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public IS3ClientPool Create(S3ClientConfiguration configuration)
        {
            var s3ClientBuilder = FindS3ClientBuilder(configuration.Vendor);

            if (s3ClientBuilder == null)
            {
                throw new ArgumentNullException($"Could not find any 'IS3ClientBuilder' by vendor '{configuration.Vendor}'");
            }

            var s3ClientPool = ActivatorUtilities.CreateInstance <DefaultS3ClientPool>(
                _serviceProvider,
                configuration,
                s3ClientBuilder);

            _logger.LogDebug("Create new S3ClientPool with configuration:{0}.", configuration);
            return(s3ClientPool);
        }
Exemple #4
0
        /// <summary>
        /// Configure Client by name
        /// </summary>
        /// <param name="name"></param>
        /// <param name="configureAction"></param>
        /// <returns></returns>
        public S3ClientConfigurations Configure(
            string name,
            Action <S3ClientConfiguration> configureAction)
        {
            if (!_clients.TryGetValue(name, out S3ClientConfiguration s3Client))
            {
                s3Client = new S3ClientConfiguration()
                {
                    Vendor = Default.Vendor
                };

                _clients.Add(name, s3Client);
            }

            configureAction(s3Client);

            return(this);
        }