/* * Copyright (C) Alibaba Cloud Computing * All rights reserved. * * 版权所有 (C)阿里云计算有限公司 */ using System; using System.Collections.Generic; using System.Globalization; using System.Text; namespace Aliyun.OSS { /// /// 表示OSS的访问控制列表(Access Control List, ACL), /// 包含了一组为指定被授权者 /// 分配特定权限的集合。 /// public class AccessControlList { private readonly Dictionary _grants = new Dictionary(); /// /// 获取所有实例的枚举。 /// public IEnumerable Grants { get { return _grants.Keys; } } /// /// 获取或设置所有者。 /// public Owner Owner { get; internal set; } /// /// 构造函数。 /// internal AccessControlList() { } /// /// 为指定授予特定的。 /// 目前只支持被授权者为。 /// /// 被授权者。 /// 被授予的权限。 internal void GrantPermission(IGrantee grantee, Permission permission) { if (grantee == null) throw new ArgumentNullException("grantee"); _grants.Add(new Grant(grantee, permission), true); } /** * 取消指定{@link Grantee}已分配的所有权限。 * @param grantee * 被授权者。目前只支持被授权者为{@link GroupGrantee#AllUsers}。 */ /// /// 取消指定已分配的所有权限。 /// /// 被授权者。 internal void RevokeAllPermissions(IGrantee grantee) { if (grantee == null) throw new ArgumentNullException("grantee"); foreach (var e in _grants.Keys) { if (e.Grantee == grantee) { _grants.Remove(e); } } } /// /// 返回该对象的字符串表示。 /// /// 对象的字符串表示形式 public override String ToString() { var grantsBuilder = new StringBuilder(); foreach(var g in Grants) { grantsBuilder.Append(g).Append(","); } return string.Format(CultureInfo.InvariantCulture, "[AccessControlList: Owner={0}, Grants={1}]", Owner, grantsBuilder); } } }