class UcbGroups::MembershipFinder
Attributes
groups[RW]
namespace[RW]
orgs[RW]
Public Class Methods
new(namespace)
click to toggle source
# File lib/ucb_groups/membership_finder.rb, line 5 def initialize(namespace) @namespace = namespace end
Public Instance Methods
find(*options)
click to toggle source
# File lib/ucb_groups/membership_finder.rb, line 9 def find(*options) @groups, @orgs = parse_options(options) return [] if @groups.empty? && @orgs.empty? ensure_valid_options args = { base: "ou=people,dc=berkeley,dc=edu", filter: membership_filter, attributes: Person.ldap_attributes } LdapConn.conn.search(args).map { |entry| Person.new(entry) } end
Private Instance Methods
ensure_valid_options()
click to toggle source
# File lib/ucb_groups/membership_finder.rb, line 35 def ensure_valid_options groups.each do |group| unless namespace_groups.include?(group.to_s) raise(InvalidCampusGroupError.new(group)) end end end
membership_filter()
click to toggle source
# File lib/ucb_groups/membership_finder.rb, line 43 def membership_filter MembershipFilter.new(namespace, groups, orgs).to_s end
namespace_groups()
click to toggle source
# File lib/ucb_groups/membership_finder.rb, line 47 def namespace_groups @namespace_groups ||= CampusGroup.find(namespace).map(&:id) end
parse_options(options)
click to toggle source
# File lib/ucb_groups/membership_finder.rb, line 27 def parse_options(options) options = options.first || {} groups = options.fetch(:groups, []).map(&:to_s) orgs = options.fetch(:orgs, []).map(&:to_s) [groups, orgs] end