sdk/Transform/GetAclResponseDeserializer.cs (43 lines of code) (raw):
/*
* Copyright (C) Alibaba Cloud Computing
* All rights reserved.
*
*/
using System;
using System.IO;
using Aliyun.OSS.Common.Communication;
using Aliyun.OSS.Util;
using Aliyun.OSS.Model;
namespace Aliyun.OSS.Transform
{
internal class GetAclResponseDeserializer : ResponseDeserializer<AccessControlList, AccessControlPolicy>
{
public GetAclResponseDeserializer(IDeserializer<Stream, AccessControlPolicy> contentDeserializer)
: base(contentDeserializer)
{ }
public override AccessControlList Deserialize(ServiceResponse xmlStream)
{
var model = ContentDeserializer.Deserialize(xmlStream.Content);
var acl = new AccessControlList {Owner = new Owner(model.Owner.Id, model.Owner.DisplayName)};
foreach(var grant in model.Grants)
{
if (grant == EnumUtils.GetStringValue(CannedAccessControlList.PublicRead))
{
acl.GrantPermission(GroupGrantee.AllUsers, Permission.Read);
acl.ACL = CannedAccessControlList.PublicRead;
}
else if (grant == EnumUtils.GetStringValue(CannedAccessControlList.PublicReadWrite))
{
acl.GrantPermission(GroupGrantee.AllUsers, Permission.FullControl);
acl.ACL = CannedAccessControlList.PublicReadWrite;
}
else if (grant == EnumUtils.GetStringValue(CannedAccessControlList.Private))
{
acl.ACL = CannedAccessControlList.Private;
}
else if (grant == EnumUtils.GetStringValue(CannedAccessControlList.Default))
{
acl.ACL = CannedAccessControlList.Default;
}
}
DeserializeGeneric(xmlStream, acl);
return acl;
}
}
}