Beispiel #1
0
        public Task <bool> BucketExistsAsync(string bucketName)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            bucketName = ConvertBucketName(bucketName);
            HeadBucketRequest request = new HeadBucketRequest(bucketName);

            try
            {
                HeadBucketResult result = _client.HeadBucket(request);
                return(Task.FromResult(true));
            }
            catch (COSXML.CosException.CosClientException ex)
            {
                throw new Exception($"Rquest client error, {ex.Message}", ex);
            }
            catch (COSXML.CosException.CosServerException ex)
            {
                if (ex.statusCode == 403)
                {
                    return(Task.FromResult(true));
                }
                else if (ex.statusCode == 404)
                {
                    return(Task.FromResult(false));
                }
                else
                {
                    throw new Exception($"Server error, {ex.Message}", ex);
                }
            }
        }
Beispiel #2
0
        public static void AsynHeadBucket(COSXML.CosXml cosXml, string bucket)
        {
            HeadBucketRequest request = new HeadBucketRequest(bucket);

            //设置签名有效时长
            request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);

            ///执行请求
            cosXml.HeadBucket(request,
                              delegate(CosResult cosResult)
            {
                HeadBucketResult result = cosResult as HeadBucketResult;
                Console.WriteLine(result.GetResultInfo());
            },
                              delegate(CosClientException clientEx, CosServerException serverEx)
            {
                if (clientEx != null)
                {
                    QLog.D("XIAO", clientEx.Message);
                    Console.WriteLine("CosClientException: " + clientEx.StackTrace);
                }
                if (serverEx != null)
                {
                    QLog.D("XIAO", serverEx.Message);
                    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                }
            });
        }
Beispiel #3
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            HeadBucketRequest request;

            try
            {
                request = new HeadBucketRequest
                {
                    NamespaceName      = NamespaceName,
                    BucketName         = BucketName,
                    IfMatch            = IfMatch,
                    IfNoneMatch        = IfNoneMatch,
                    OpcClientRequestId = OpcClientRequestId
                };

                response = client.HeadBucket(request).GetAwaiter().GetResult();
                WriteOutput(response);
                FinishProcessing(response);
            }
            catch (Exception ex)
            {
                TerminatingErrorDuringExecution(ex);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 检索存储桶是否存在且是否有权限访问
        /// </summary>
        /// <param name="bucketName">存储桶,格式:BucketName-APPID</param>
        public static CosResultInfoResponseDto CheckBucket(string bucketName = CosConfig.DEFAULT_BUCKET)
        {
            var cosXml   = InitializeCosConfig();
            var response = new CosResultInfoResponseDto();

            try
            {
                string            bucket  = $"{bucketName}-{AppId}"; //格式:BucketName-APPID
                HeadBucketRequest request = new HeadBucketRequest(bucket);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                HeadBucketResult result = cosXml.HeadBucket(request);
                //请求成功
                response.statusCode    = result.httpCode;
                response.statusMessage = result.httpMessage;
                return(response);
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                response.statusCode    = clientEx.errorCode;
                response.statusMessage = clientEx.Message;
                response.info          = clientEx.ToJson();
                return(response);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                response.statusCode    = serverEx.statusCode;
                response.statusMessage = serverEx.statusMessage;
                response.info          = serverEx.GetInfo();
                return(response);
            }
        }
Beispiel #5
0
        public void Test()
        {
            var json = JsonConvert.SerializeObject(_cosOptions);

            try
            {
                cosXml = GetCosXml();
                string            bucket  = _cosOptions.Bucket;
                HeadBucketRequest request = new HeadBucketRequest(bucket);
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                HeadBucketResult result = cosXml.HeadBucket(request);

                Logging.Log.WriteInformationMessage(LOGTAG, "Test", "Request complete {0}: {1}, {2}", result.httpCode, json, result.GetResultInfo());
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                Logging.Log.WriteErrorMessage(LOGTAG, "Test", clientEx, "Request failed: {0}", json);
                throw;
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                Logging.Log.WriteErrorMessage(LOGTAG, "Test", serverEx, "Request failed: {0}, {1}", json, serverEx.GetInfo());
                throw;
            }
        }
Beispiel #6
0
        /// 获取存储桶信息
        public void HeadBucket()
        {
            //.cssg-snippet-body-start:[head-bucket]
            try
            {
                string            bucket  = "examplebucket-1250000000"; //格式:BucketName-APPID
                HeadBucketRequest request = new HeadBucketRequest(bucket);
                //执行请求
                HeadBucketResult result = cosXml.HeadBucket(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
            }

            //.cssg-snippet-body-end
        }
Beispiel #7
0
        private void CreateObsClient()
        {
            try
            {
                //初始化配置参数
                ObsConfig config = new ObsConfig();
                config.Endpoint = _endpoint;
                config.AuthType = AuthTypeEnum.OBS;
                // 创建ObsClient实例
                _obsClient = new ObsClient(_accessKey, _secretKey, config);
                // 使用访问OBS

                HeadBucketRequest request = new HeadBucketRequest
                {
                    BucketName = _bucketName,
                };
                _obsClient.HeadBucket(request);
                //if (_obsClient.HeadBucket(request) == false)
                //{
                //    CreateBucketRequest requestCreate = new CreateBucketRequest();
                //    requestCreate.BucketName = _bucketName;
                //    _obsClient.CreateBucket(requestCreate);
                //}
            }
            catch (ObsException ex)
            {
                throw new Exception("上传Obs错误:" + ex.ErrorCode + ":" + ex.Message);
            }
        }
Beispiel #8
0
        public Task <HeadBucketResponse> HeadBucketAsync(string bucketName, Action <HeadBucketRequest>?config = null, CancellationToken token = default)
        {
            HeadBucketRequest request = new HeadBucketRequest(bucketName);

            config?.Invoke(request);

            return(BucketOperations.HeadBucketAsync(request, token));
        }
        /// <summary>
        /// バケットヘッダを取得する
        /// </summary>
        /// <param name="nameSpaceName"></param>
        /// <param name="bucketName"></param>
        /// <param name="regionName"></param>
        /// <returns></returns>
        public HeadBucketResponse GetBucketHead(string nameSpaceName, string bucketName, string regionName)
        {
            ObjectStorageClient.SetRegion(regionName);
            HeadBucketRequest headObjectRequest = new HeadBucketRequest
            {
                NamespaceName = nameSpaceName,
                BucketName    = bucketName,
            };

            return(ObjectStorageClient.HeadBucket(headObjectRequest));
        }
Beispiel #10
0
        public void TestHeadBucket()
        {
            OssClient         ossClient = GetOssClient();
            HeadBucketRequest request   = new HeadBucketRequest();

            request.RegionId   = "cn-north-1";
            request.Bucketname = "BIBO";
            var result = ossClient.HeadBucket(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(result));
        }
Beispiel #11
0
        /// <summary>
        /// 判断桶是否存在
        /// </summary>
        /// <param name="bucketName"></param>
        /// <returns></returns>
        public Task <bool> BucketExistsAsync(string bucketName)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            HeadBucketRequest request = new HeadBucketRequest
            {
                BucketName = bucketName,
            };
            bool exists = _client.HeadBucket(request);

            return(Task.FromResult(exists));
        }
Beispiel #12
0
 /// <summary>
 /// 查询桶是否存在,返回的结果中HTTP状态码为200表明桶存在,否则返回404表明桶不存在。
 /// </summary>
 /// <param name="request">查询桶是否存在的请求参数。</param>
 ///
 /// <returns>查询桶是否存在的响应结果。</returns>
 ///
 public bool HeadBucket(HeadBucketRequest request)
 {
     try
     {
         this.DoRequest <HeadBucketRequest, ObsWebServiceResponse>(request);
         return(true);
     }catch (ObsException e)
     {
         if (e.StatusCode == HttpStatusCode.NotFound)
         {
             return(false);
         }
         throw e;
     }
 }
Beispiel #13
0
        static void HeadBucket()
        {
            try
            {
                HeadBucketRequest request = new HeadBucketRequest()
                {
                    BucketName = bucketName
                };
                bool response = client.HeadBucket(request);

                Console.WriteLine("Head bucket response: {0}", response);
            }
            catch (ObsException ex)
            {
                Console.WriteLine("Exception errorcode: {0}, when head bucket.", ex.ErrorCode);
                Console.WriteLine("Exception errormessage: {0}", ex.ErrorMessage);
            }
        }
Beispiel #14
0
        public void headBucket()
        {
            //.cssg-snippet-body-start:[head-bucket]
            CosXmlConfig config = new CosXmlConfig.Builder()
                                  .SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms
                                  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
                                  .IsHttps(true)                 //设置默认 HTTPS 请求
                                  .SetAppid("1253653367")        //设置腾讯云账户的账户标识 APPID
                                  .SetRegion("ap-guangzhou")     //设置一个默认的存储桶地域
                                  .Build();

            string secretId       = Environment.GetEnvironmentVariable("COS_KEY");    //云 API 密钥 SecretId
            string secretKey      = Environment.GetEnvironmentVariable("COS_SECRET"); //云 API 密钥 SecretKey
            long   durationSecond = 600;                                              //每次请求签名有效时长,单位为秒
            QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId,
                                                                                                    secretKey, durationSecond);

            CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

            try
            {
                string            bucket  = "bucket-cssg-test-dotnet-1253653367"; //格式:BucketName-APPID
                HeadBucketRequest request = new HeadBucketRequest(bucket);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                HeadBucketResult result = cosXml.HeadBucket(request);
                //请求成功
                Console.WriteLine(result.GetResultInfo());
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx);
                Assert.Null(clientEx);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                Assert.Null(serverEx);
            }
            //.cssg-snippet-body-end
        }
Beispiel #15
0
        public void HeadBucket()
        {
            try
            {
                HeadBucketRequest request = new HeadBucketRequest(bucket);

                //执行请求
                HeadBucketResult result = cosXml.HeadBucket(request);

                Assert.AreEqual(result.httpCode, 200);
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                Console.WriteLine("CosClientException: " + clientEx.Message);
                Assert.Fail();
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                Assert.Fail();
            }
        }
Beispiel #16
0
 public static void HeadBucket(COSXML.CosXml cosXml, string bucket)
 {
     try
     {
         HeadBucketRequest request = new HeadBucketRequest(bucket);
         //设置签名有效时长
         request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
         //执行请求
         HeadBucketResult result = cosXml.HeadBucket(request);
         Console.WriteLine(result.GetResultInfo());
     }
     catch (COSXML.CosException.CosClientException clientEx)
     {
         QLog.D("XIAO", clientEx.Message);
         Console.WriteLine("CosClientException: " + clientEx.Message);
     }
     catch (COSXML.CosException.CosServerException serverEx)
     {
         QLog.D("XIAO", serverEx.Message);
         Console.WriteLine("CosServerException: " + serverEx.GetInfo());
     }
 }
        /// <summary>
        /// Efficiently checks to see if a bucket exists and gets the current entity tag (ETag) for the bucket.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <HeadBucketResponse> HeadBucket(HeadBucketRequest request)
        {
            var uri = new Uri($"{GetEndPointNoneVersion(ObjectStorageServices.Bucket(request.NamespaceName, request.BucketName), this.Region)}");

            var httpRequestHeaderParam = new HttpRequestHeaderParam()
            {
                IfMatch            = request.IfMatch,
                IfNoneMatch        = request.IfNoneMatch,
                OpcClientRequestId = request.OpcClientRequestId
            };
            var webResponse = await this.RestClientAsync.Head(uri, httpRequestHeaderParam);

            using (var stream = webResponse.GetResponseStream())
                using (var reader = new StreamReader(stream))
                {
                    return(new HeadBucketResponse()
                    {
                        ETag = webResponse.Headers.Get("ETag"),
                        OpcRequestId = webResponse.Headers.Get("opc-request-id"),
                        OpcClientRequestId = webResponse.Headers.Get("opc-client-request-id")
                    });
                }
        }
Beispiel #18
0
 public void HeadBucket(HeadBucketRequest request, Callback.OnSuccessCallback <CosResult> successCallback, Callback.OnFailedCallback failCallback)
 {
     Schedue(request, new HeadBucketResult(), successCallback, failCallback);
 }
Beispiel #19
0
 public HeadBucketResult HeadBucket(HeadBucketRequest request)
 {
     return((Model.Bucket.HeadBucketResult)Excute(request, new Model.Bucket.HeadBucketResult()));
 }
Beispiel #20
0
 /// <summary>
 ///  查询bucket是否存在
 ///
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public async Task <HeadBucketResponse> HeadBucket(HeadBucketRequest request)
 {
     return(await new HeadBucketExecutor().Client(this).Execute <HeadBucketResponse, HeadBucketResult, HeadBucketRequest>(request).ConfigureAwait(false));
 }
Beispiel #21
0
 public HeadBucketResponse HeadBucket(HeadBucketRequest request)
 {
     return(new HeadBucketResponseParser().Parse(request, _netLayer.Invoke(request)));
 }
Beispiel #22
0
        public static void DisplayObjectStorage(ClientConfig config)
        {
            var client = new ObjectStorageClient(config)
            {
                Region = Regions.US_ASHBURN_1
            };

            // get namespace
            GetNamespaceRequest getNamespaceRequest = new GetNamespaceRequest();
            var namespaceName = client.GetNamespace(getNamespaceRequest);

            // get namespace metadata
            GetNamespaceMetadataRequest getNamespaceMetadataRequest = new GetNamespaceMetadataRequest()
            {
                NamespaceName = namespaceName
            };
            var namespaceMetadata = client.GetNamespaceMetadata(getNamespaceMetadataRequest).NamespaceMetadata;

            Console.WriteLine("* Namespace------------------------");
            Console.WriteLine($" namespace : {namespaceMetadata.Namespace}");
            Console.WriteLine($" defaultS3CompartmentId : {namespaceMetadata.DefaultS3CompartmentId}");
            Console.WriteLine($" defaultSwiftCompartmentId : {namespaceMetadata.DefaultSwiftCompartmentId}");

            // list bucket
            ListBucketsRequest listBucketsRequest = new ListBucketsRequest()
            {
                NamespaceName = namespaceName,
                CompartmentId = config.TenancyId
            };
            var listBucket = client.ListBuckets(listBucketsRequest);

            Console.WriteLine($"* Bucket------------------------");
            Console.WriteLine($" namespace : {namespaceName}");
            Console.WriteLine($" comaprtment : {config.TenancyId}");

            listBucket.Items.ForEach(bucket => {
                HeadBucketRequest headBucketRequest = new HeadBucketRequest()
                {
                    NamespaceName = bucket.Namespace,
                    BucketName    = bucket.Name
                };
                var buckethead = client.HeadBucket(headBucketRequest);

                // get bucket details
                GetBucketRequest getBucketRequest = new GetBucketRequest()
                {
                    NamespaceName = bucket.Namespace,
                    BucketName    = bucket.Name,
                    IfMatch       = buckethead.ETag
                };
                var bucketDetail = client.GetBucket(getBucketRequest);
                Console.WriteLine($"\t|- name : {bucketDetail.Bucket.Name}");
                Console.WriteLine($"\t|  timeCreated : {bucketDetail.Bucket.TimeCreated}");

                Console.WriteLine($"\t|* Object------------------------");
                ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
                {
                    NamespaceName = bucketDetail.Bucket.Namespace,
                    BucketName    = bucketDetail.Bucket.Name
                };
                var Objs = client.ListObjects(listObjectsRequest);
                Objs.ListObjects.Objects.ForEach(obj => {
                    Console.WriteLine($"\t|\t|- name : {obj.Name}");

                    GetObjectRequest getObjectRequest = new GetObjectRequest()
                    {
                        NamespaceName = bucketDetail.Bucket.Namespace,
                        BucketName    = bucketDetail.Bucket.Name,
                        ObjectName    = obj.Name,
                    };
                    var ObjDetails = client.GetObject(getObjectRequest);
                    Console.WriteLine($"\t|\t|- contentLength : {ObjDetails.ContentLength}");

                    // download
                    if (!Directory.Exists("./ExampleDownload"))
                    {
                        Directory.CreateDirectory("./ExampleDownload");
                    }
                    if (!File.Exists($"./ExampleDownload/{obj.Name.Replace('/', '_')}"))
                    {
                        client.DownloadObject(getObjectRequest, "./ExampleDownload/", obj.Name.Replace('/', '_'));
                    }
                });
            });

            // UsageReport
            // Example policy:
            // define tenancy usage-report as ocid1.tenancy.oc1..aaaaaaaaned4fkpkisbwjlr56u7cj63lf3wffbilvqknstgtvzub7vhqkggq
            // endorse group group_name to read objects in tenancy usage-report
            try
            {
                var listORequest = new ListObjectsRequest()
                {
                    NamespaceName = "bling",
                    BucketName    = config.TenancyId
                };
                var reports = client.ListObjects(listORequest);
                Console.WriteLine($"* UsageReport------------------------");
                reports.ListObjects.Objects.ForEach(r =>
                {
                    Console.WriteLine($"  {r.Name}");
                    if (!Directory.Exists("./ExampleDownload/report"))
                    {
                        Directory.CreateDirectory("./ExampleDownload/report");
                    }

                    // download object

                    /*
                     * if (!File.Exists($"./ExampleDownload/report/{r.Name.Replace('/', '_')}"))
                     * {
                     *  var getObjectRequest = new GetObjectRequest()
                     *  {
                     *      NamespaceName = "bling",
                     *      BucketName = config.TenancyId,
                     *      ObjectName = r.Name,
                     *  };
                     *  client.DownloadObject(getObjectRequest, "./ExampleDownload/report/", r.Name.Replace('/', '_'));
                     * }*/
                });
            } catch (Exception e)
            {
                Console.WriteLine($"Does not meet UsageReport usage requirements. message:{e.Message}");
            }
        }
        public static void DisplayBucketAndObject(ClientConfig config, string namespaceName, ObjectStorageClient client, IdentityClient identityClient)
        {
            // Compartment required only to get a bucket
            var listCompartmentRequest = new ListCompartmentRequest()
            {
                CompartmentId          = config.TenancyId,
                CompartmentIdInSubtree = true,
                AccessLevel            = ListCompartmentRequest.AccessLevels.ACCESSIBLE
            };
            var compartments = identityClient.ListCompartment(listCompartmentRequest).Items;

            // root(tenant) add
            compartments.Add(new OCISDK.Core.Identity.Model.Compartment {
                Id = config.TenancyId, Name = "root"
            });

            foreach (var compartment in compartments)
            {
                Console.WriteLine($"## Compartment<{compartment.Name}>--------");

                // list bucket
                ListBucketsRequest listBucketsRequest = new ListBucketsRequest()
                {
                    NamespaceName = namespaceName,
                    CompartmentId = compartment.Id
                };
                var listBucket = client.ListBuckets(listBucketsRequest);
                Console.WriteLine($"* Bucket------------------------");
                Console.WriteLine($" namespace : {namespaceName}");
                Console.WriteLine($" comaprtment : {config.TenancyId}");

                listBucket.Items.ForEach(bucket =>
                {
                    HeadBucketRequest headBucketRequest = new HeadBucketRequest()
                    {
                        NamespaceName = bucket.Namespace,
                        BucketName    = bucket.Name
                    };
                    var buckethead = client.HeadBucket(headBucketRequest);

                    // get bucket details
                    GetBucketRequest getBucketRequest = new GetBucketRequest()
                    {
                        NamespaceName = bucket.Namespace,
                        BucketName    = bucket.Name,
                        IfMatch       = buckethead.ETag
                    };
                    var bucketDetail = client.GetBucket(getBucketRequest);
                    Console.WriteLine($"\t|- * name : {bucketDetail.Bucket.Name}");
                    Console.WriteLine($"\t|    timeCreated : {bucketDetail.Bucket.TimeCreated}");

                    // Bucket workrequests
                    ListWorkRequestsRequest listWorkRequestsRequest = new ListWorkRequestsRequest
                    {
                        CompartmentId = bucketDetail.Bucket.CompartmentId,
                        BucketName    = bucket.Name
                    };
                    var wrs = client.ListWorkRequests(listWorkRequestsRequest);
                    Console.WriteLine($"\t|* WorkRequest------------------------");
                    foreach (var wr in wrs.Items)
                    {
                        Console.WriteLine($"\t|\t|- name : {wr.OperationType}");
                        Console.WriteLine($"\t|\t|- status : {wr.Status}");
                        Console.WriteLine($"\t|\t|- start : {wr.TimeStarted}");
                        Console.WriteLine($"\t|\t|- finish : {wr.TimeFinished}");
                    }

                    // objects
                    Console.WriteLine($"\t|* Object------------------------");
                    ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
                    {
                        NamespaceName = bucketDetail.Bucket.Namespace,
                        BucketName    = bucketDetail.Bucket.Name,
                        Fields        = new List <string> {
                            "size", "timeCreated", "md5"
                        }
                    };
                    var Objs = client.ListObjects(listObjectsRequest);
                    Objs.ListObjects.Objects.ForEach(obj =>
                    {
                        Console.WriteLine($"\t|\t|- name : {obj.Name}");

                        GetObjectRequest getObjectRequest = new GetObjectRequest()
                        {
                            NamespaceName = bucketDetail.Bucket.Namespace,
                            BucketName    = bucketDetail.Bucket.Name,
                            ObjectName    = obj.Name,
                        };
                        var ObjDetails = client.GetObject(getObjectRequest);
                        Console.WriteLine($"\t|\t|- contentLength : {ObjDetails.ContentLength}");

                        // download

                        /*if (!Directory.Exists("./ExampleDownload"))
                         * {
                         *  Directory.CreateDirectory("./ExampleDownload");
                         * }
                         * if (!File.Exists($"./ExampleDownload/{obj.Name.Replace('/', '_')}"))
                         * {
                         *  client.DownloadObject(getObjectRequest, "./ExampleDownload/", obj.Name.Replace('/', '_'));
                         * }*/
                    });
                });
            }
        }
Beispiel #24
0
 /// <summary>
 ///  查询bucket是否存在
 ///
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public HeadBucketResponse HeadBucket(HeadBucketRequest request)
 {
     return(new HeadBucketExecutor().Client(this).Execute <HeadBucketResponse, HeadBucketResult, HeadBucketRequest>(request));
 }
 /// <summary>
 /// Start the asynchronous request for checking whether a bucket exists.
 /// </summary>
 /// <param name="request">Parameters in a request for checking whether a bucket exists</param>
 /// <param name="callback">Asynchronous request callback function</param>
 /// <param name="state">Asynchronous request status object</param>
 /// <returns>Response to the asynchronous request</returns>
 public IAsyncResult BeginHeadBucket(HeadBucketRequest request, AsyncCallback callback, object state)
 {
     return(this.BeginDoRequest <HeadBucketRequest>(request, callback, state));
 }
Beispiel #26
0
 public Task <HeadBucketResponse> HeadBucketAsync(HeadBucketRequest request, CancellationToken token = default)
 {
     return(_requestHandler.SendRequestAsync <HeadBucketRequest, HeadBucketResponse>(request, token));
 }
Beispiel #27
0
        internal bool ExistsWithBucketCheck(out bool bucketExists)
        {
            bucketExists = true;
            try
            {
                if (String.IsNullOrEmpty(BucketName))
                {
                    return(true);
                }
                else if (String.IsNullOrEmpty(ObjectKey))
                {
                    var getBucketRequest = new HeadBucketRequest
                    {
                        NamespaceName = NamespaceName,
                        BucketName    = BucketName
                    };

                    try
                    {
                        Client.HeadBucket(getBucketRequest);
                        return(true);
                    }
                    catch (WebException we)
                    {
                        if (we.Status.Equals(WebExceptionStatus.ProtocolError) && ((HttpWebResponse)we.Response).StatusCode == HttpStatusCode.NotFound)
                        {
                            return(false);
                        }
                        throw;
                    }
                }
                else
                {
                    var request = new ListObjectsRequest()
                    {
                        NamespaceName = NamespaceName,
                        BucketName    = BucketName,
                        Delimiter     = "/",
                        Prefix        = ObjectStorageHelper.EncodeKey(ObjectKey),
                        Limit         = 1
                    };
                    var response = Client.ListObjects(request);
                    return(response.ListObjects.Objects.Count > 0 || response.ListObjects.Prefixes.Count > 0);
                }
            }
            catch (WebException we)
            {
                if (we.Status.Equals(WebExceptionStatus.ProtocolError) && ((HttpWebResponse)we.Response).StatusCode == HttpStatusCode.NotFound)
                {
                    return(false);
                }
                else
                {
                    throw;
                }
            }
            catch (Exception e)
            {
                if (string.Equals(e.Message, "NoSuchBucket"))
                {
                    return(false);
                }
                else
                {
                    throw;
                }
            }
        }