public async Task <AccessMode> GetObjectAclAsync(string bucketName, string objectName)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            if (string.IsNullOrEmpty(objectName))
            {
                throw new ArgumentNullException(nameof(objectName));
            }
            if (!await this.ObjectsExistsAsync(bucketName, objectName))
            {
                throw new Exception($"Object '{objectName}' not in bucket '{bucketName}'.");
            }
            var result = _client.GetObjectAcl(bucketName, objectName);
            var mode   = result.ACL switch
            {
                CannedAccessControlList.Default => AccessMode.Default,
                CannedAccessControlList.Private => AccessMode.Private,
                CannedAccessControlList.PublicRead => AccessMode.PublicRead,
                CannedAccessControlList.PublicReadWrite => AccessMode.PublicReadWrite,
                _ => AccessMode.Default,
            };

            return(await Task.FromResult(mode));
        }
        public static void GetBucketAcl(string bucketName)
        {
            string key = "GetObjectSample";

            try
            {
                var result = client.GetObjectAcl(bucketName, key);
                Console.WriteLine("Get Object Acl succeeded,Id:{0} Acl:{1} succeeded",
                                  result.Owner.Id, result.ACL.ToString());
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                                  ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }