コード例 #1
0
        /// <summary>
        /// Updates Region cache for given bucket.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="bucketName"></param>
        internal async Task <string> Update(MinioClient client, string bucketName)
        {
            string region = null;

            if (bucketName != null && client.AccessKey != null &&
                client.SecretKey != null && !Instance.Exists(bucketName))
            {
                string location = null;
                var    path     = utils.UrlEncode(bucketName);
                // Initialize client
                Uri requestUrl = RequestUtil.MakeTargetURL(client.BaseUrl, client.Secure);
                client.SetTargetURL(requestUrl);

                var request = new RestRequest(path, Method.GET);
                request.AddQueryParameter("location", "");
                var response = await client.ExecuteAsync(client.NoErrorHandlers, request).ConfigureAwait(false);

                if (HttpStatusCode.OK.Equals(response.StatusCode))
                {
                    var       contentBytes = System.Text.Encoding.UTF8.GetBytes(response.Content);
                    var       stream       = new MemoryStream(contentBytes);
                    XDocument root         = XDocument.Parse(response.Content);
                    location = root.Root.Value;
                }
                if (string.IsNullOrEmpty(location))
                {
                    region = "us-east-1";
                }
                else
                {
                    // eu-west-1 can be sometimes 'EU'.
                    if (location == "EU")
                    {
                        region = "eu-west-1";
                    }
                    else
                    {
                        region = location;
                    }
                }

                // Add the new location.
                Instance.Add(bucketName, region);
            }
            return(region);
        }