Module: RHC::Rest::Membership

Included in:
Application, Domain
Defined in:
lib/rhc/rest/membership.rb

Defined Under Namespace

Classes: Member

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(other) ⇒ Object



39
40
# File 'lib/rhc/rest/membership.rb', line 39

def self.included(other)
end

Instance Method Details

#compact_membersObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/rhc/rest/membership.rb', line 61

def compact_members
  arr = members.reject(&:owner?) rescue []
  if arr.length > 5
    arr.sort_by!(&:name)
    admin, arr = arr.partition(&:admin?)
    edit, arr = arr.partition(&:editor?)
    view, arr = arr.partition(&:viewer?)
    admin << "Admins" if admin.present?
    edit << "Editors" if edit.present?
    view << "Viewers" if view.present?
    arr.map!(&:to_s)
    admin.concat(edit).concat(view).concat(arr)
  elsif arr.present?
    arr.sort_by{ |m| [m.role_weight, m.name] }.join(', ')
  end
end

#delete_members(options = {}) ⇒ Object



85
86
87
88
89
90
# File 'lib/rhc/rest/membership.rb', line 85

def delete_members(options={})
  raise RHC::MembersNotSupported unless supports_members?
  rest_method "LIST_MEMBERS", nil, {:method => :delete}.merge(options)
ensure
  @members = attributes['members'] = nil
end

#leave(options = {}) ⇒ Object



92
93
94
95
96
97
# File 'lib/rhc/rest/membership.rb', line 92

def leave(options={})
  raise RHC::MembersNotSupported unless supports? 'LEAVE'
  rest_method "LEAVE", nil, options
ensure
  @members = attributes['members'] = nil
end

#membersObject



50
51
52
53
54
55
56
57
58
59
# File 'lib/rhc/rest/membership.rb', line 50

def members
  @members ||=
    if (members = attributes['members']).nil?
      debug "Getting all members for #{id}"
      raise RHC::MembersNotSupported unless supports_members?
      rest_method 'LIST_MEMBERS'
    else
      members.map{ |m| Member.new(m, client) }
    end
end

#ownerObject



99
100
101
102
103
# File 'lib/rhc/rest/membership.rb', line 99

def owner
  if o = Array(attribute(:members)).find{ |m| m['owner'] == true }
    o['name'] || o['login']
  end
end

#supports_members?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/rhc/rest/membership.rb', line 42

def supports_members?
  supports? 'LIST_MEMBERS'
end

#supports_update_members?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/rhc/rest/membership.rb', line 46

def supports_update_members?
  supports? 'UPDATE_MEMBERS'
end

#update_members(members, options = {}) ⇒ Object



78
79
80
81
82
83
# File 'lib/rhc/rest/membership.rb', line 78

def update_members(members, options={})
  raise "Members must be an array" unless members.is_a?(Array)
  raise RHC::MembersNotSupported unless supports_members?
  raise RHC::ChangeMembersOnResourceNotSupported unless supports_update_members?
  @members = (attributes['members'] = rest_method('UPDATE_MEMBERS', {:members => members}, options))
end