public void SetResult(CopyObjectResult result)
 {
     this.eTag            = result.copyObject.eTag;
     this.httpCode        = result.httpCode;
     this.httpMessage     = result.httpMessage;
     this.responseHeaders = result.responseHeaders;
 }
Ejemplo n.º 2
0
        public void CopyObject()
        {
            try
            {
                CopySourceStruct copySource = new CopySourceStruct(QCloudServer.Instance().appid,
                                                                   bucket, QCloudServer.Instance().region, copykey);

                CopyObjectRequest request = new CopyObjectRequest(bucket, multiKey);

                //设置拷贝源
                request.SetCopySource(copySource);

                //设置是否拷贝还是更新
                request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY);

                //执行请求
                CopyObjectResult result = cosXml.CopyObject(request);

                Console.WriteLine(result.GetResultInfo());
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                Console.WriteLine("CosClientException: " + clientEx.StackTrace);
                Assert.True(false);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                Assert.True(false);
            }
        }
Ejemplo n.º 3
0
        public void MarshalResponse(IConfig config, CopyObjectResponse response, IDictionary <string, string> headers, Stream responseStream)
        {
            response.NewVersionId = headers.GetHeader(AmzHeaders.XAmzCopySourceVersionId);

            if (HeaderParserHelper.TryParseExpiration(headers, out (DateTimeOffset expiresOn, string ruleId)data))
            {
                response.LifeCycleExpiresOn = data.expiresOn;
                response.LifeCycleRuleId    = data.ruleId;
            }

            response.RequestCharged = headers.ContainsKey(AmzHeaders.XAmzRequestCharged);

            response.SseAlgorithm = headers.GetHeaderEnum <SseAlgorithm>(AmzHeaders.XAmzSse);
            response.SseKmsKeyId  = headers.GetHeader(AmzHeaders.XAmzSseAwsKmsKeyId);
            response.SseContext   = headers.GetHeader(AmzHeaders.XAmzSseContext);

            response.SseCustomerAlgorithm = headers.GetHeaderEnum <SseCustomerAlgorithm>(AmzHeaders.XAmzSseCustomerAlgorithm);
            response.SseCustomerKeyMd5    = headers.GetHeaderByteArray(AmzHeaders.XAmzSseCustomerKeyMd5, BinaryEncoding.Base64);

            response.VersionId = headers.GetHeader(AmzHeaders.XAmzVersionId);

            XmlSerializer s = new XmlSerializer(typeof(CopyObjectResult));

            using (XmlTextReader r = new XmlTextReader(responseStream))
            {
                r.Namespaces = false;

                CopyObjectResult deleteResult = (CopyObjectResult)s.Deserialize(r);

                response.LastModified = deleteResult.LastModified;
                response.ETag         = deleteResult.ETag;
            }
        }
Ejemplo n.º 4
0
        public static void CopyObject(COSXML.CosXml cosXml, string bucket, string key, COSXML.Model.Tag.CopySourceStruct copySource)
        {
            try
            {
                CopyObjectRequest request = new CopyObjectRequest(bucket, key);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);

                //设置拷贝源
                request.SetCopySource(copySource);

                //设置是否拷贝还是更新
                request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY);

                //执行请求
                CopyObjectResult result = cosXml.CopyObject(request);

                Console.WriteLine(result.GetResultInfo());
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                QLog.D("XIAO", clientEx.Message);
                Console.WriteLine("CosClientException: " + clientEx.StackTrace);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                QLog.D("XIAO", serverEx.Message);
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
            }
        }
Ejemplo n.º 5
0
        public void AsynCopyObject(COSXML.CosXml cosXml, string bucket, string key, COSXML.Model.Tag.CopySourceStruct copySource)
        {
            CopyObjectRequest request = new CopyObjectRequest(bucket, key);

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

            //设置拷贝源
            request.SetCopySource(copySource);

            //设置是否拷贝还是更新
            request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY);

            cosXml.CopyObject(request,
                              delegate(CosResult cosResult)
            {
                CopyObjectResult result = cosResult as CopyObjectResult;
                Console.WriteLine(result.GetResultInfo());
                manualResetEvent.Set();
            },
                              delegate(CosClientException clientEx, CosServerException serverEx)
            {
                if (clientEx != null)
                {
                    Console.WriteLine("CosClientException: " + clientEx.Message);
                }
                if (serverEx != null)
                {
                    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                }

                manualResetEvent.Set();
            });
        }
        public async Task <bool> CopyObjectAsync(string bucketName, string objectName, string destBucketName, string destObjectName = null)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new ArgumentNullException(nameof(bucketName));
            }
            if (string.IsNullOrEmpty(objectName))
            {
                throw new ArgumentNullException(nameof(objectName));
            }
            if (string.IsNullOrEmpty(destBucketName))
            {
                destBucketName = bucketName;
            }
            if (string.IsNullOrEmpty(destObjectName))
            {
                destObjectName = objectName;
            }
            bucketName = ConvertBucketName(bucketName);
            CopySourceStruct  copySource = new CopySourceStruct(Options.Endpoint, bucketName, Options.Region, objectName);
            string            bucket     = ConvertBucketName(destBucketName);
            CopyObjectRequest request    = new CopyObjectRequest(bucket, destObjectName);

            //设置拷贝源
            request.SetCopySource(copySource);
            //设置是否拷贝还是更新,此处是拷贝
            request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.Copy);
            //执行请求
            CopyObjectResult result = _client.CopyObject(request);

            return(await Task.FromResult(result.IsSuccessful()));
        }
Ejemplo n.º 7
0
        private void SimpleCopy()
        {
            copyObjectRequest = new CopyObjectRequest(bucket, key);
            copyObjectRequest.SetCopyMetaDataDirective(Common.CosMetaDataDirective.Copy);
            copyObjectRequest.SetCopySource(copySource);
            cosXmlServer.CopyObject(copyObjectRequest,
                                    delegate(CosResult cosResult)
            {
                lock (syncExit)
                {
                    if (isExit)
                    {
                        if (taskState == TaskState.Cancel)
                        {
                            DeleteObject();
                        }

                        return;
                    }
                }

                if (UpdateTaskState(TaskState.Completed))
                {
                    CopyObjectResult result       = cosResult as CopyObjectResult;
                    CopyTaskResult copyTaskResult = new CopyTaskResult();

                    copyTaskResult.SetResult(result);

                    if (successCallback != null)
                    {
                        successCallback(copyTaskResult);
                    }
                }
            },

                                    delegate(CosClientException clientEx, CosServerException serverEx)
            {
                lock (syncExit)
                {
                    if (isExit)
                    {
                        return;
                    }
                }

                if (UpdateTaskState(TaskState.Failed))
                {
                    if (failCallback != null)
                    {
                        failCallback(clientEx, serverEx);
                    }
                }
            }
                                    );
        }
Ejemplo n.º 8
0
        public void ParseXml()
        {
            string xmlText =

                @"<CopyObjectResult xmlns=""http://s3.amazonaws.com/doc/2006-03-01/"">
				<LastModified>2008-02-20T22:13:01</LastModified>
				<ETag>""7e9c608af58950deeb370c98608ed097""</ETag>
			</CopyObjectResult>"            ;

            var result = CopyObjectResult.ParseXml(xmlText);

            Assert.Equal(new DateTime(2008, 02, 20, 22, 13, 01, DateTimeKind.Utc), result.LastModified);
            Assert.Equal(@"""7e9c608af58950deeb370c98608ed097""", result.ETag);
        }
Ejemplo n.º 9
0
 private void SimpleCopy()
 {
     copyObjectRequest = new CopyObjectRequest(bucket, key);
     copyObjectRequest.SetCopyMetaDataDirective(Common.CosMetaDataDirective.COPY);
     copyObjectRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
     copyObjectRequest.SetCopySource(copySource);
     cosXmlServer.CopyObject(copyObjectRequest, delegate(CosResult cosResult)
     {
         lock (syncExit)
         {
             if (isExit)
             {
                 if (taskState == TaskState.CANCEL)
                 {
                     DeleteObject();
                 }
                 return;
             }
         }
         if (UpdateTaskState(TaskState.COMPLETED))
         {
             CopyObjectResult result       = cosResult as CopyObjectResult;
             CopyTaskResult copyTaskResult = new CopyTaskResult();
             copyTaskResult.SetResult(result);
             if (successCallback != null)
             {
                 successCallback(copyTaskResult);
             }
         }
     },
                             delegate(CosClientException clientEx, CosServerException serverEx)
     {
         lock (syncExit)
         {
             if (isExit)
             {
                 return;
             }
         }
         if (UpdateTaskState(TaskState.FAILED))
         {
             if (failCallback != null)
             {
                 failCallback(clientEx, serverEx);
             }
         }
     });
 }
Ejemplo n.º 10
0
        public void TestCopyObject()
        {
            if (init())
            {
                CopyObjectRequest copyObjectRequest = new CopyObjectRequest();
                copyObjectRequest.SourceObject      = objKeyNameFileData;
                copyObjectRequest.SourceBucket      = bucketName;
                copyObjectRequest.DestinationBucket = "test2-zzy-jr";
                copyObjectRequest.DestinationObject = objKeyNameFileData;
                //CannedAccessControlList cannedAcl=new CannedAccessControlList(CannedAccessControlList.PUBLICK_READ_WRITE);
                //copyObjectRequest.CannedAcl = cannedAcl;

                CopyObjectResult result = ks3Client.copyObject(copyObjectRequest);
                Assert.IsNotNull(result);
            }
        }
Ejemplo n.º 11
0
        /// 复制对象时替换对象属性
        public void CopyObjectReplaced()
        {
            //.cssg-snippet-body-start:[copy-object-replaced]
            try
            {
                string sourceAppid  = "1250000000";              //账号 appid
                string sourceBucket = "sourcebucket-1250000000"; //"源对象所在的存储桶
                string sourceRegion = "COS_REGION";              //源对象的存储桶所在的地域
                string sourceKey    = "sourceObject";            //源对象键
                //构造源对象属性
                CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket,
                                                                   sourceRegion, sourceKey);

                string            bucket  = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
                string            key     = "exampleobject";            //对象键
                CopyObjectRequest request = new CopyObjectRequest(bucket, key);
                //设置拷贝源
                request.SetCopySource(copySource);
                //设置是否拷贝还是更新,此处是拷贝
                request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.Replaced);
                // 替换元数据
                request.SetRequestHeader("Content-Disposition", "attachment; filename=example.jpg");
                //执行请求
                CopyObjectResult result = cosXml.CopyObject(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
        }
Ejemplo n.º 12
0
        public void Rename(string oldname, string newname)
        {
            try
            {
                cosXml = GetCosXml();
                string sourceAppid  = _cosOptions.Appid;
                string sourceBucket = _cosOptions.Bucket;
                string sourceRegion = _cosOptions.Region;
                string sourceKey    = GetFullKey(oldname);

                CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket,
                                                                   sourceRegion, sourceKey);

                string            bucket  = _cosOptions.Bucket;
                string            key     = GetFullKey(newname);
                CopyObjectRequest request = new CopyObjectRequest(bucket, key);

                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), KEY_DURATION_SECOND);
                request.SetCopySource(copySource);
                request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY);

                CopyObjectResult result = cosXml.CopyObject(request);

                //Console.WriteLine(result.GetResultInfo());

                Delete(oldname);
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                Logging.Log.WriteErrorMessage(LOGTAG, "Rename", clientEx, "Rename failed: {0} to {1}", oldname, newname);
                throw;
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                Logging.Log.WriteErrorMessage(LOGTAG, "Rename", serverEx, "Rename failed: {0} to {1}, {2}", oldname, newname, serverEx.GetInfo());
                throw;
            }
        }
Ejemplo n.º 13
0
        /// 修改对象元数据
        public void ModifyObjectMetadata()
        {
            //.cssg-snippet-body-start:[modify-object-metadata]
            try
            {
                string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
                string key    = "exampleobject";            //对象键
                string appId  = "1250000000";               //账号 appid
                string region = "COS_REGION";               //源对象的存储桶所在的地域
                //构造对象属性
                CopySourceStruct copySource = new CopySourceStruct(appId, bucket,
                                                                   region, key);

                CopyObjectRequest request = new CopyObjectRequest(bucket, key);
                //设置拷贝源
                request.SetCopySource(copySource);
                //设置是否拷贝还是更新,此处是拷贝
                request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.REPLACED);
                // 替换元数据
                request.SetRequestHeader("Content-Disposition", "attachment; filename=example.jpg");
                request.SetRequestHeader("Content-Type", "image/png");
                //执行请求
                CopyObjectResult result = cosXml.CopyObject(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
        }
Ejemplo n.º 14
0
        /// 修改对象存储类型
        public void ModifyObjectStorageClass()
        {
            //.cssg-snippet-body-start:[modify-object-storage-class]
            try
            {
                string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
                string key    = "exampleobject";            //对象键
                string appId  = "1250000000";               //账号 appid
                string region = "COS_REGION";               //源对象的存储桶所在的地域
                //构造对象属性
                CopySourceStruct copySource = new CopySourceStruct(appId, bucket,
                                                                   region, key);

                CopyObjectRequest request = new CopyObjectRequest(bucket, key);
                //设置拷贝源
                request.SetCopySource(copySource);
                //设置是否拷贝还是更新,此处是拷贝
                request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.REPLACED);
                // 修改为归档存储
                request.SetCosStorageClass("ARCHIVE");
                //执行请求
                CopyObjectResult result = cosXml.CopyObject(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
        }
Ejemplo n.º 15
0
        public static bool copyObject()
        {
            try
            {
                Console.WriteLine("--- copyObject: ---");
                CopyObjectRequest copyObjectRequest = new CopyObjectRequest();
                copyObjectRequest.SourceObject      = objKeyNameFileData;
                copyObjectRequest.SourceBucket      = bucketName;
                copyObjectRequest.DestinationBucket = "test2-zzy-jr";
                copyObjectRequest.DestinationObject = objKeyNameFileData;
                //CannedAccessControlList cannedAcl=new CannedAccessControlList(CannedAccessControlList.PUBLICK_READ_WRITE);
                //copyObjectRequest.CannedAcl = cannedAcl;

                CopyObjectResult result = ks3Client.copyObject(copyObjectRequest);
                Console.WriteLine("---------------------\n");
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.ToString());
                return(false);
            }

            return(true);
        }
Ejemplo n.º 16
0
        public static void AsynCopyObject(COSXML.CosXml cosXml, string bucket, string key, COSXML.Model.Tag.CopySourceStruct copySource)
        {
            QLog.D("XIAO", String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId));
            CopyObjectRequest request = new CopyObjectRequest(bucket, key);

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

            //设置拷贝源
            request.SetCopySource(copySource);

            //设置是否拷贝还是更新
            request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY);

            cosXml.CopyObject(request,
                              delegate(CosResult cosResult)
            {
                CopyObjectResult result = cosResult as CopyObjectResult;
                Console.WriteLine(result.GetResultInfo());
                Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId));
            },
                              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());
                }
                Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId));
            });
        }