public static GetSymlinkCommand Create(IServiceClient client, Uri endpoint,
                                        ExecutionContext context,
                                        IDeserializer <ServiceResponse, OssSymlink> deserializer,
                                        GetSymlinkRequest request)
 {
     return(new GetSymlinkCommand(client, endpoint, context, deserializer, request));
 }
 private GetSymlinkCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
                           IDeserializer <ServiceResponse, OssSymlink> deserializer,
                           GetSymlinkRequest request)
     : base(client, endpoint, context, deserializer)
 {
     OssUtils.CheckBucketName(request.BucketName);
     OssUtils.CheckObjectKey(request.Key);
     _request = request;
 }
        public void SymlinkObjectTest()
        {
            var    key     = OssTestUtils.GetObjectKey(_className);
            string symlink = key + "_link";

            OssTestUtils.UploadObject(_ossClient, _bucketName, key, Config.UploadTestFile);

            var request = new CreateSymlinkRequest(_bucketName, symlink, key);

            Assert.AreEqual(request.RequestPayer, RequestPayer.BucketOwner);

            try
            {
                _ossPayerClient.CreateSymlink(request);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            request.RequestPayer = RequestPayer.Requester;
            _ossPayerClient.CreateSymlink(request);

            Assert.IsTrue(_ossClient.DoesObjectExist(_bucketName, symlink));

            //
            var gRequest = new GetSymlinkRequest(_bucketName, symlink);

            Assert.AreEqual(gRequest.RequestPayer, RequestPayer.BucketOwner);
            try
            {
                _ossPayerClient.GetSymlink(gRequest);
                Assert.Fail("should not here.");
            }
            catch (OssException e)
            {
                Assert.AreEqual(e.ErrorCode, "AccessDenied");
            }

            gRequest.RequestPayer = RequestPayer.Requester;
            OssSymlink ossSymlink = _ossPayerClient.GetSymlink(gRequest);

            Assert.AreEqual(ossSymlink.Target, key);
        }