class Matterhorn::Endpoint::Group
Matterhorn::Endpoint::Group
===¶ ↑
Public Instance Methods
create(name, description = nil, roles = nil, users = nil)
click to toggle source
Create a new group with name and descritption. The group_id will be created from the name -> downcase and underscore. If a role is unknown to the system, it will be created. If a user is unknown only the relation ship beteen the group and the member will be stored. The user will not be created!
# File lib/matterhorn/endpoint/group.rb, line 18 def create(name, description = nil, roles = nil, users = nil) done = false begin split_response http_endpoint_client.post( "groups", convert_to_form_param(name, description, roles, users) ) done = true rescue => ex exception_handler('create', ex, { 400 => "Group name: #{name} too long!" } ) end done end
delete(group_id)
click to toggle source
————————————————————————————- delete —
# File lib/matterhorn/endpoint/group.rb, line 93 def delete(group_id) done = false begin split_response http_endpoint_client.delete( "groups/#{group_id}" ) done = true rescue => ex exception_handler('create', ex, { 404 => "Group[#{group_id}] not found!" } ) end done end
index(offset = 0, limit = 100)
click to toggle source
Return a list of groups as a hash {
'groups' => { 'group' => [ { 'id' => <group_id>, 'name' => <name>, 'description' => <description>, 'role' => <role>, 'memebers' => [ <username>, ... ], 'roles' => [ <role>, ...], }, ... ] }
}
# File lib/matterhorn/endpoint/group.rb, line 55 def index(offset = 0, limit = 100) groups = {} begin split_response http_endpoint_client.get( "groups/groups.json?limit=#{limit}&offset=#{offset}" ) groups = filter_groups(JSON.parse(response_body)) rescue => ex exception_handler('index', ex, {}) end groups end
update(group_id, name, description = nil, roles = nil, users = nil)
click to toggle source
————————————————————————————- update —
# File lib/matterhorn/endpoint/group.rb, line 72 def update(group_id, name, description = nil, roles = nil, users = nil) done = false begin split_response http_endpoint_client.put( "groups/#{group_id}", convert_to_form_param(name, description, roles, users) ) done = true rescue => ex exception_handler('create', ex, { 400 => "Group name: #{name} too long!", 404 => "Group[#{group_id}] not found!" } ) end done end
Private Instance Methods
convert_to_form_param(name, description, roles, users)
click to toggle source
—————————————————————————- private section —
# File lib/matterhorn/endpoint/group.rb, line 113 def convert_to_form_param(name, description, roles, users) form_param = {} form_param['name'] = name.to_s if description.kind_of?(String) form_param['description'] = description end if roles.kind_of?(String) form_param['roles'] = roles elsif roles.kind_of?(Array) form_param['roles'] = roles.compact.uniq.join(',') end if users.kind_of?(String) form_param['users'] = users elsif users.kind_of?(Array) form_param['users'] = users.compact.uniq.join(',') end form_param end
filter_groups(respons_hash)
click to toggle source
# File lib/matterhorn/endpoint/group.rb, line 133 def filter_groups(respons_hash) groups = { 'groups' => { 'group' => [] } } return groups if respons_hash.nil? || !respons_hash.kind_of?(Hash) || respons_hash['groups'].nil? groups_hash = respons_hash['groups'] return groups if groups_hash.nil? || !groups_hash.kind_of?(Hash) || groups_hash['group'].nil? unless groups_hash['group'].kind_of?(Array) groups_hash['group'] = [ groups_hash['group'] ] end groups_hash['group'].each do |group_hash| next unless group_hash.kind_of?(Hash) groups['groups']['group'] << { 'id' => group_hash['id'], 'name' => group_hash['name'], 'description' => group_hash['description'], 'role' => group_hash['role'], 'members' => filter_members(group_hash['members']), 'roles' => filter_roles(group_hash['roles']) } end groups end
filter_members(members_hash)
click to toggle source
# File lib/matterhorn/endpoint/group.rb, line 160 def filter_members(members_hash) member_list = [] return member_list if members_hash.nil? || !members_hash.kind_of?(Hash) || members_hash['member'].nil? unless members_hash['member'].kind_of?(Array) members_hash['member'] = [ members_hash['member'] ] end members_hash['member'].each do |member| next unless member.kind_of?(String) member_list << member end member_list end
filter_roles(roles_hash)
click to toggle source
# File lib/matterhorn/endpoint/group.rb, line 176 def filter_roles(roles_hash) role_list = [] return role_list if roles_hash.nil? || !roles_hash.kind_of?(Hash) || roles_hash['role'].nil? unless roles_hash['role'].kind_of?(Array) roles_hash['role'] = [ roles_hash['role'] ] end roles_hash['role'].each do |role| next unless role.kind_of?(Hash) && !role['name'].nil? role_list << role['name'] end role_list end