class Egnyte::Permission
Attributes
data[RW]
Public Class Methods
apply(session, permission_object, target_path)
click to toggle source
# File lib/egnyte/permission.rb, line 128 def self.apply(session, permission_object, target_path) if permission_object.valid? and permission_object.has_data? permissions_set = transfrom_by_perm_level(permission_object) ["None", "Viewer", "Editor", "Full", "Owner"].each do |level| tmp_hash = {} tmp_hash['users'] = permissions_set['users'][level] unless permissions_set['users'].nil? tmp_hash['groups'] = permissions_set['groups'][level] unless permissions_set['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.permission_path(session)}/#{target_path}", tmp_hash.to_json, false) end end end "Permissions set on #{target_path}: #{permission_object.to_hash}" end end
build_from_api_listing(json_listing)
click to toggle source
# File lib/egnyte/permission.rb, line 50 def self.build_from_api_listing(json_listing) perm = empty_permissions_hash 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()
click to toggle source
# File lib/egnyte/permission.rb, line 46 def self.empty_permissions_hash { 'users' => {}, 'groups' => {} } end
explicit_permissions(session, path, params=nil)
click to toggle source
# File lib/egnyte/permission.rb, line 73 def self.explicit_permissions(session, path, params=nil) inherited = self.inherited_permissions(session, path, params).data permissions = self.folder_permissions(session, path, params).data explicit = self.empty_permissions_hash #filter out permissions that exist in the parent folder's permissions 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)
click to toggle source
# File lib/egnyte/permission.rb, line 60 def self.folder_permissions(session, path, params=nil) path = Egnyte::Helper.normalize_path(path) path += Egnyte::Helper.params_to_filter_string(params) if params response = session.get("#{self.permission_path(session)}/#{path}") self.build_from_api_listing(response) end
inherited_permissions(session, path, params=nil)
click to toggle source
# File lib/egnyte/permission.rb, line 67 def self.inherited_permissions(session, path, params=nil) path = Egnyte::Helper.normalize_path(path) path = path.split('/')[0..-2].join('/') self.folder_permissions(session, path, params) end
new(permissions_hash={})
click to toggle source
# File lib/egnyte/permission.rb, line 19 def initialize(permissions_hash={}) raise Egnyte::InvalidParameters unless (permissions_hash.empty? or permissions_hash['users'] or permissions_hash['groups']) @data = empty_permissions_hash merge!(permissions_hash) end
permission_path(session)
click to toggle source
# File lib/egnyte/permission.rb, line 87 def self.permission_path(session) "https://#{session.domain}.#{EGNYTE_DOMAIN}/#{session.api}/v1/perms/folder" end
transfrom_by_perm_level(permission_object)
click to toggle source
# File lib/egnyte/permission.rb, line 115 def self.transfrom_by_perm_level(permission_object) perm_type_hash = { 'users' => { "None" => [], "Viewer" => [], "Editor" => [], "Full" => [], "Owner" => [] }, 'groups' => { "None" => [], "Viewer" => [], "Editor" => [], "Full" => [], "Owner" => [] } } permission_object.data.each do |type, perm| perm.each do |k,v| perm_type_hash[type][v] << k end end perm_type_hash end
Public Instance Methods
==(other_perm_object)
click to toggle source
# File lib/egnyte/permission.rb, line 146 def ==(other_perm_object) @data == other_perm_object.data end
diff(other_perm_object)
click to toggle source
# 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, permission| if other_perm_object.data[level][item].nil? only_originial.data[level][item] = permission elsif other_perm_object.data[level][item] != permission discrepancies['original'].data[level][item] = permission discrepancies['other'].data[level][item] = other_perm_object.data[level][item] end common_perms.data[level][item] = permission if other_perm_object.data[level][item] == permission 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, permission| only_other.data[level][item] = permission if @data[level][item].nil? || @data[level][item] != permission end end [only_originial, common_perms, only_other, discrepancies] end
empty?()
click to toggle source
# File lib/egnyte/permission.rb, line 99 def empty? return !has_data? end
empty_permissions_hash()
click to toggle source
# File lib/egnyte/permission.rb, line 42 def empty_permissions_hash Egnyte::Permission.empty_permissions_hash end
has_data?()
click to toggle source
# File lib/egnyte/permission.rb, line 95 def has_data? return @data['users'].size > 0 || @data['groups'].size > 0 end
merge(new_perm_set)
click to toggle source
# 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, permission| permission.capitalize! old_perm_set[type][username] = permission if ["None", "Viewer", "Editor", "Full", "Owner"].include? permission end end old_perm_set end
merge!(new_perm_set)
click to toggle source
# File lib/egnyte/permission.rb, line 38 def merge!(new_perm_set) @data = merge(new_perm_set) end
to_hash()
click to toggle source
# File lib/egnyte/permission.rb, line 103 def to_hash @data end
to_json()
click to toggle source
# File lib/egnyte/permission.rb, line 107 def to_json to_hash.to_json end
to_s()
click to toggle source
# File lib/egnyte/permission.rb, line 111 def to_s to_json end
valid?()
click to toggle source
# File lib/egnyte/permission.rb, line 91 def valid? return @data['users'].class == Hash && @data['groups'].class == Hash end