예제 #1
0
        public void Construct()
        {
            var request = new ListBucketRequest("s3.amazon.com", "bucket", new ListBucketOptions {
                MaxKeys = 1000
            });

            Assert.Equal("https://s3.amazon.com/bucket?list-type=2&max-keys=1000", request.RequestUri.ToString());
        }
예제 #2
0
        private ListBucketResult DoListBucket(ListBucketRequest request)
        {
            StringBuilder sb = new StringBuilder("?", 256);

            if (!string.IsNullOrEmpty(request.Delimiter))
            {
                sb.Append(String.Concat("delimiter=", Util.UrlEncode(request.Delimiter), "&"));
            }
            if (!string.IsNullOrEmpty(request.Marker))
            {
                sb.Append(String.Concat("marker=", Util.UrlEncode(request.Marker), "&"));
            }
            if (request.MaxKeys > 0)
            {
                sb.Append(String.Concat("max-keys=", request.MaxKeys, "&"));
            }
            if (!string.IsNullOrEmpty(request.Prefix))
            {
                sb.Append(String.Concat("prefix=", Util.UrlEncode(request.Prefix), "&"));
            }

            string parameters = sb.ToString();

            if (parameters.EndsWith("&", StringComparison.OrdinalIgnoreCase))
            {
                parameters = parameters.Remove(parameters.Length - 1);
            }

            if (parameters.Length <= 1)
            {
                parameters = null;
            }

            var wRequest = CreateRequest("GET", "text/plain", request.BucketName, Util.UrlEncode(request.Delimiter, true), parameters);

            using (var response = wRequest.GetResponse() as HttpWebResponse)
                using (var stream = response.GetResponseStream())
                    using (var reader = new StreamReader(stream))
                    {
                        var body    = reader.ReadToEnd();
                        var element = XElement.Parse(body);

                        XmlSerializer serializer       = new XmlSerializer(typeof(ListBucketResult));
                        var           listBucketResult = (ListBucketResult)serializer.Deserialize(element.CreateReader());

                        if (listBucketResult.IsTruncated && listBucketResult.S3Objects.Count > 0)
                        {
                            listBucketResult.NextMarker = listBucketResult.S3Objects.Last().Key;
                        }

                        return(listBucketResult);
                    }
        }
예제 #3
0
        public async Task <ListBucketResponse> ListBucketAsync(ListBucketRequest request)
        {
            var result = await _minioRepository.ListBucketAsync(new ListBucketParam()
            {
                Keyword = request.Keyword
            });

            return(new ListBucketResponse()
            {
                BucketCount = result.Count,
                BucketInfos = result
            });
        }
예제 #4
0
 public ListBucketResult ListBucket(ListBucketRequest request)
 {
     return(Util.RetryMethod <ListBucketResult>(() => DoListBucket(request), RetryCount));
 }