public async Task CreateBucketAsync(BucketSettings settings, CreateBucketOptions options)
        {
            var uri = GetUri();

            Logger.LogInformation($"Attempting to create bucket with name {settings.Name} - {uri}");

            try
            {
                // create bucket
                var content = new FormUrlEncodedContent(GetBucketSettingAsFormValues(settings));
                var result  = await _client.PostAsync(uri, content, options.CancellationToken).ConfigureAwait(false);

                if (result.StatusCode == HttpStatusCode.BadRequest)
                {
                    var json = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

                    if (json.IndexOf("Bucket with given name already exists", StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        throw new BucketAlreadyExistsException(settings.Name);
                    }
                }

                result.EnsureSuccessStatusCode();
            }
            catch (BucketAlreadyExistsException)
            {
                Logger.LogError($"Failed to create bucket with name {settings.Name} because it already exists");
                throw;
            }
            catch (Exception exception)
            {
                Logger.LogError(exception, $"Failed to create bucket with name {settings.Name} - {uri}");
                throw;
            }
        }
Exemplo n.º 2
0
        public static Task CreateBucketAsync(this IBucketManager bucketManager, BucketSettings settings, Action <CreateBucketOptions> configureOptions)
        {
            var options = new CreateBucketOptions();

            configureOptions(options);

            return(bucketManager.CreateBucketAsync(settings, options));
        }