AdlsDotNetSDK/Acl/AclAction.cs (62 lines of code) (raw):

using System; using System.Text; namespace Microsoft.Azure.DataLake.Store.Acl { /// <summary> /// Available Access control permissions /// </summary> [Flags] public enum AclAction { /// <summary> /// No permissions /// </summary> None = 0, /// <summary> /// Execute only permissions /// </summary> ExecuteOnly = 1, /// <summary> /// Write only permissions /// </summary> WriteOnly = 2, /// <summary> /// Read only permissions /// </summary> ReadOnly = 4, /// <summary> /// Read and write permission /// </summary> ReadWrite = ReadOnly | WriteOnly, /// <summary> /// Read and execute permission /// </summary> ReadExecute = ReadOnly | ExecuteOnly, /// <summary> /// Write and execute permission /// </summary> WriteExecute = WriteOnly | ExecuteOnly, /// <summary> /// All read, write and execute permission /// </summary> All = ReadOnly | WriteOnly | ExecuteOnly } /// <summary> /// Extension class /// </summary> public static class AclActionExtension { /// <summary> /// Returns the AclAction corresponding to the octal permission. For "rwx" returns AclAction.All /// </summary> /// <param name="rwx">Octal permission</param> /// <returns>Acl Action</returns> public static AclAction? GetAclAction(string rwx) { rwx = rwx.ToLower(); if (rwx.Length != 3) { return null; } int val = 0; if (rwx[0] == 'r') { val += 4; } else if (rwx[0] != '-') { return null; } if (rwx[1] == 'w') { val += 2; } else if (rwx[1] != '-') { return null; } if (rwx[2] == 'x') { val += 1; } else if (rwx[2] != '-') { return null; } return (AclAction)val; } /// <summary> /// Extension method that returns the octal permission corresponding to the AclACtion. For ex: AclAction.ReadExecute => "r-x" /// </summary> /// <param name="act">Acl aCtion</param> /// <returns>Octal permission string</returns> public static string GetRwx(this AclAction act) { StringBuilder sb=new StringBuilder(3); sb.Append((act & AclAction.ReadOnly) > 0?'r':'-'); sb.Append((act & AclAction.WriteOnly) > 0 ? 'w' : '-'); sb.Append((act & AclAction.ExecuteOnly) > 0 ? 'x' : '-'); return sb.ToString(); } } }