Class: Egnyte::Permission
- Inherits:
-
Object
- Object
- Egnyte::Permission
- Defined in:
- lib/egnyte/permission.rb
Constant Summary collapse
- @@valid_perm_levels =
Representative Structure of @data {
'users': { 'jsmith': 'Full', 'jdoe': 'Editor' }, 'groups': { 'employees': 'Full', 'partners': 'Viewer' }
}
["None", "Viewer", "Editor", "Full", "Owner"]
Instance Attribute Summary collapse
-
#data ⇒ Object
Returns the value of attribute data.
Class Method Summary collapse
- .apply(session, permission_object, target_path) ⇒ Object
- .build_from_api_listing(json_listing) ⇒ Object
- .empty_permissions_hash ⇒ Object
- .explicit_permissions(session, path, params = nil) ⇒ Object
- .folder_permissions(session, path, params = nil) ⇒ Object
- .inherited_permissions(session, path, params = nil) ⇒ Object
- .permission_path(session) ⇒ Object
- .transfrom_by_perm_level(permission_object) ⇒ Object
Instance Method Summary collapse
- #==(other_perm_object) ⇒ Object
- #diff(other_perm_object) ⇒ Object
- #empty? ⇒ Boolean
- #empty_permissions_hash ⇒ Object
- #has_data? ⇒ Boolean
-
#initialize(permissions_hash = {}) ⇒ Permission
constructor
A new instance of Permission.
- #merge(new_perm_set) ⇒ Object
- #merge!(new_perm_set) ⇒ Object
- #to_hash ⇒ Object
- #to_json ⇒ Object
- #to_s ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(permissions_hash = {}) ⇒ Permission
Returns a new instance of Permission.
19 20 21 22 23 |
# File 'lib/egnyte/permission.rb', line 19 def initialize(={}) raise Egnyte::InvalidParameters unless (.empty? or ['users'] or ['groups']) @data = merge!() end |
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
5 6 7 |
# File 'lib/egnyte/permission.rb', line 5 def data @data end |
Class Method Details
.apply(session, permission_object, target_path) ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/egnyte/permission.rb', line 128 def self.apply(session, , target_path) if .valid? and .has_data? = transfrom_by_perm_level() ["None", "Viewer", "Editor", "Full", "Owner"].each do |level| tmp_hash = {} tmp_hash['users'] = ['users'][level] unless ['users'].nil? tmp_hash['groups'] = ['groups'][level] unless ['groups'].nil? tmp_hash['permission'] = level unless tmp_hash['users'].nil? and tmp_hash['groups'].nil? unless tmp_hash['users'].empty? and tmp_hash['groups'].empty? session.post("#{self.(session)}/#{target_path}", tmp_hash.to_json, false) end end end "Permissions set on #{target_path}: #{.to_hash}" end end |
.build_from_api_listing(json_listing) ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/egnyte/permission.rb', line 50 def self.build_from_api_listing(json_listing) perm = json_listing.each do |type, data| data.each do |item| perm[type][item["subject"]] = item["permission"] end end Egnyte::Permission.new(perm) end |
.empty_permissions_hash ⇒ Object
46 47 48 |
# File 'lib/egnyte/permission.rb', line 46 def self. { 'users' => {}, 'groups' => {} } end |
.explicit_permissions(session, path, params = nil) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/egnyte/permission.rb', line 73 def self.(session, path, params=nil) inherited = self.(session, path, params).data = self.(session, path, params).data explicit = self. #filter out permissions that exist in the parent folder's permissions .each do |type, perm| perm.each do |k,v| explicit[type][k] = v unless inherited[type][k] == v end end self.new(explicit) end |
.folder_permissions(session, path, params = nil) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/egnyte/permission.rb', line 60 def self.(session, path, params=nil) path = Egnyte::Helper.normalize_path(path) path += Egnyte::Helper.params_to_filter_string(params) if params response = session.get("#{self.(session)}/#{path}") self.build_from_api_listing(response) end |
.inherited_permissions(session, path, params = nil) ⇒ Object
67 68 69 70 71 |
# File 'lib/egnyte/permission.rb', line 67 def self.(session, path, params=nil) path = Egnyte::Helper.normalize_path(path) path = path.split('/')[0..-2].join('/') self.(session, path, params) end |
.permission_path(session) ⇒ Object
87 88 89 |
# File 'lib/egnyte/permission.rb', line 87 def self.(session) "https://#{session.domain}.#{EGNYTE_DOMAIN}/#{session.api}/v1/perms/folder" end |
.transfrom_by_perm_level(permission_object) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/egnyte/permission.rb', line 115 def self.transfrom_by_perm_level() perm_type_hash = { 'users' => { "None" => [], "Viewer" => [], "Editor" => [], "Full" => [], "Owner" => [] }, 'groups' => { "None" => [], "Viewer" => [], "Editor" => [], "Full" => [], "Owner" => [] } } .data.each do |type, perm| perm.each do |k,v| perm_type_hash[type][v] << k end end perm_type_hash end |
Instance Method Details
#==(other_perm_object) ⇒ Object
146 147 148 |
# File 'lib/egnyte/permission.rb', line 146 def ==(other_perm_object) @data == other_perm_object.data end |
#diff(other_perm_object) ⇒ Object
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/egnyte/permission.rb', line 150 def diff(other_perm_object) only_originial = Egnyte::Permission.new common_perms = Egnyte::Permission.new only_other = Egnyte::Permission.new discrepancies = {'original' => Egnyte::Permission.new, 'other' => Egnyte::Permission.new} # find whether permission is only in the self's set or is common between self and other @data.each do |level, perm_hash| perm_hash.each do |item, | if other_perm_object.data[level][item].nil? only_originial.data[level][item] = elsif other_perm_object.data[level][item] != discrepancies['original'].data[level][item] = discrepancies['other'].data[level][item] = other_perm_object.data[level][item] end common_perms.data[level][item] = if other_perm_object.data[level][item] == end end # find whether permission is in the other_perm_object other_perm_object.data.each do |level, perm_hash| perm_hash.each do |item, | only_other.data[level][item] = if @data[level][item].nil? || @data[level][item] != end end [only_originial, common_perms, only_other, discrepancies] end |
#empty? ⇒ Boolean
99 100 101 |
# File 'lib/egnyte/permission.rb', line 99 def empty? return !has_data? end |
#empty_permissions_hash ⇒ Object
42 43 44 |
# File 'lib/egnyte/permission.rb', line 42 def Egnyte::Permission. end |
#has_data? ⇒ Boolean
95 96 97 |
# File 'lib/egnyte/permission.rb', line 95 def has_data? return @data['users'].size > 0 || @data['groups'].size > 0 end |
#merge(new_perm_set) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/egnyte/permission.rb', line 25 def merge(new_perm_set) old_perm_set = @data.dup new_perm_set = new_perm_set.data if new_perm_set.class == Egnyte::Permission raise Egnyte::InvalidParameters unless new_perm_set.class == Hash new_perm_set.each do |type, perms_hash| perms_hash.each do |username, | .capitalize! old_perm_set[type][username] = if ["None", "Viewer", "Editor", "Full", "Owner"].include? end end old_perm_set end |
#merge!(new_perm_set) ⇒ Object
38 39 40 |
# File 'lib/egnyte/permission.rb', line 38 def merge!(new_perm_set) @data = merge(new_perm_set) end |
#to_hash ⇒ Object
103 104 105 |
# File 'lib/egnyte/permission.rb', line 103 def to_hash @data end |
#to_json ⇒ Object
107 108 109 |
# File 'lib/egnyte/permission.rb', line 107 def to_json to_hash.to_json end |
#to_s ⇒ Object
111 112 113 |
# File 'lib/egnyte/permission.rb', line 111 def to_s to_json end |
#valid? ⇒ Boolean
91 92 93 |
# File 'lib/egnyte/permission.rb', line 91 def valid? return @data['users'].class == Hash && @data['groups'].class == Hash end |