/*
* 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);
}
}
}