Module: Another::Ldap::Proxy::FilterConverter

Defined in:
lib/another/ldap/proxy/filter_converter.rb

Class Method Summary collapse

Class Method Details

.from_server_to_client(filter) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/another/ldap/proxy/filter_converter.rb', line 10

def self.from_server_to_client(filter)
  return filter unless filter.is_a?(Array)

  operator, *items = filter.compact
  case operator
  when :eq
    Net::LDAP::Filter.eq(items.first, items.last)
  when :ge
    Net::LDAP::Filter.ge(items.first, items.last)
  when :le
    Net::LDAP::Filter.le(items.first, items.last)
  when :present
    Net::LDAP::Filter.pres(items.first)
  when :and
    Net::LDAP::Filter.join(from_server_to_client(items.first),
                           from_server_to_client(items.last))
  when :or
    Net::LDAP::Filter.intersect(from_server_to_client(items.first),
                                from_server_to_client(items.last))
  when :not
    Net::LDAP::Filter.negate(from_server_to_client(items.first))
  else
    raise "Unsupported server filter operator: #{operator}"
  end
end