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