class CF::UAA::GroupCli
Public Instance Methods
add_members(scim, name, members)
click to toggle source
# File lib/uaa/cli/group.rb, line 144 def add_members(scim, name, members) group = scim_get_object(scim, :group, gname(name)) old_members = (group['members'] || []) new_members = find_members(scim, members).map do |member| member.merge('origin' => 'uaa') end unless new_members.size == members.size raise 'not all users found, none added' end group['members'] = union(old_members, new_members) unless group['members'].size > old_members.size raise 'no new users given' end scim.put(:group, group) 'success' end
delete_members(scim, name, members)
click to toggle source
# File lib/uaa/cli/group.rb, line 166 def delete_members(scim, name, members) group = scim_get_object(scim, :group, gname(name)) old_members = (group['members'] || []) new_members = find_members(scim, members) unless new_members.size == members.size raise 'not all users found, none deleted' end group['members'] = difference(old_members, new_members) unless group['members'].size < old_members.size raise 'no existing users to delete' end group.delete('members') if group['members'].empty? scim.put(:group, group) 'success' end
difference(old_members, new_members)
click to toggle source
# File lib/uaa/cli/group.rb, line 136 def difference(old_members, new_members) new_ids = id_set(new_members) old_members.reject do |member| new_ids.include?(member['value']) end end
find_members(scim, members)
click to toggle source
# File lib/uaa/cli/group.rb, line 109 def find_members(scim, members) found_members = [] scim.ids(:user, *members).each do |member| found_members << { 'type' => 'USER', 'value' => member['id'], 'origin' => member['origin'] } end found_members end
gname(name)
click to toggle source
# File lib/uaa/cli/group.rb, line 24 def gname(name) name || ask("Group name") end
id_set(objs)
click to toggle source
# File lib/uaa/cli/group.rb, line 101 def id_set(objs) objs.each_with_object(Set.new) {|o, s| id = o.is_a?(String)? o: (o["id"] || o["value"] || o["memberid"]) raise BadResponse, "no id found in response of current members" unless id s << id } end
union(old_members, new_members)
click to toggle source
# File lib/uaa/cli/group.rb, line 123 def union(old_members, new_members) old_ids = id_set(old_members) all_members = old_members.clone new_members.each do |member| unless old_ids.include?(member['value']) all_members << member end end all_members end
Private Instance Methods
is_integer?(input)
click to toggle source
# File lib/uaa/cli/group.rb, line 201 def is_integer?(input) input && (input.to_i.to_s == input) end
is_natural_number?(input)
click to toggle source
# File lib/uaa/cli/group.rb, line 197 def is_natural_number?(input) is_integer?(input) && input.to_i > -1 end