URI::LDAP
class URI::LDAP
Parent:URI::Generic
LDAP URI SCHEMA(在RFC2255中描述)
常量
COMPONENT
URI::LDAP的可用组件的数组
DEFAULT_PORT
URI::LDAP的默认端口为389
SCOPE
可用于起点的范围。
- SCOPE_BASE - the Base DN
- SCOPE_ONE - 基本DN下的一个级别,不包括基本DN和
不包括此项下的任何条目。
- SCOPE_SUB - 子级,所有级别的所有条目
公共类别方法
build(args) Show source
描述
从组件创建一个新的URI::LDAP对象,并进行语法检查。
接受的组件是主机,端口,dn,属性,范围,过滤器和扩展。
这些组件应该以数组的形式提供,或者以组件名称前面用冒号形成的哈希形式提供。
如果使用数组,则必须按照host,port,dn,attributes,scope,filter,extensions的顺序传递组件。
示例:
newuri = URI::LDAP.build{:host => 'ldap.example.com',
:dn> => '/dc=example'})
newuri = URI::LDAP.build(["ldap.example.com", nil,
"/dc=example;dc=com", "query", nil, nil, nil])
调用超类方法URI::Generic.build
# File lib/uri/ldap.rb, line 73
def self.build(args)
tmp = Util::make_components_hash(self, args)
if tmp[:dn]
tmp[:path] = tmp[:dn]
end
query = []
[:extensions, :filter, :scope, :attributes].collect do |x|
next if !tmp[x] && query.size == 0
query.unshift(tmp[x])
end
tmp[:query] = query.join('?')
return super(tmp)
end
new(*arg) Show source
描述
按照RFC 2396从通用URI组件创建一个新的URI::LDAP对象。不执行特定于LDAP的语法检查。
参数是scheme
,userinfo
,host
,port
,registry
,path
,opaque
,query
和fragment
按此顺序。
示例:
uri = URI::LDAP.new("ldap", nil, "ldap.example.com", nil,
"/dc=example;dc=com", "query", nil, nil, nil, nil)
另见URI::Generic.new
调用超类方法URI::Generic.new
# File lib/uri/ldap.rb, line 108
def initialize(*arg)
super(*arg)
if @fragment
raise InvalidURIError, 'bad LDAP URL'
end
parse_dn
parse_query
end
公共实例方法
attributes() Show source
返回属性。
# File lib/uri/ldap.rb, line 177
def attributes
@attributes
end
attributes=(val) Show source
setter属性 val
# File lib/uri/ldap.rb, line 190
def attributes=(val)
set_attributes(val)
val
end
dn() Show source
返回dn。
# File lib/uri/ldap.rb, line 158
def dn
@dn
end
dn=(val) Show source
为dn设置 val
# File lib/uri/ldap.rb, line 171
def dn=(val)
set_dn(val)
val
end
extensions() Show source
返回扩展名。
# File lib/uri/ldap.rb, line 234
def extensions
@extensions
end
extensions=(val) Show source
setter用于扩展 val
# File lib/uri/ldap.rb, line 247
def extensions=(val)
set_extensions(val)
val
end
filter() Show source
返回过滤器。
# File lib/uri/ldap.rb, line 215
def filter
@filter
end
filter=(val) Show source
设置为过滤器 val
# File lib/uri/ldap.rb, line 228
def filter=(val)
set_filter(val)
val
end
hierarchical?() Show source
检查URI是否有路径对于URI::LDAP,这将返回 false
# File lib/uri/ldap.rb, line 254
def hierarchical?
false
end
scope() Show source
返回范围。
# File lib/uri/ldap.rb, line 196
def scope
@scope
end
scope=(val) Show source
范围val
的setter
# File lib/uri/ldap.rb, line 209
def scope=(val)
set_scope(val)
val
end
受保护的实例方法
set_attributes(val) Show source
私人二传手属性 val
# File lib/uri/ldap.rb, line 182
def set_attributes(val)
@attributes = val
build_path_query
@attributes
end
set_dn(val) Show source
dnval
私人二传手
# File lib/uri/ldap.rb, line 163
def set_dn(val)
@dn = val
build_path_query
@dn
end
set_extensions(val) Show source
私人二传手 val
# File lib/uri/ldap.rb, line 239
def set_extensions(val)
@extensions = val
build_path_query
@extensions
end
set_filter(val) Show source
私人二传手过滤器 val
# File lib/uri/ldap.rb, line 220
def set_filter(val)
@filter = val
build_path_query
@filter
end
set_scope(val) Show source
范围私人二传手 val
# File lib/uri/ldap.rb, line 201
def set_scope(val)
@scope = val
build_path_query
@scope
end
私有实例方法
build_path_query() Show source
私有方法组装query
从attributes
,scope
,filter
和extensions
。
# File lib/uri/ldap.rb, line 145
def build_path_query
@path = '/' + @dn
query = []
[@extensions, @filter, @scope, @attributes].each do |x|
next if !x && query.size == 0
query.unshift(x)
end
@query = query.join('?')
end
parse_dn() Show source
dn
使用path
组件属性进行清理的私有方法
# File lib/uri/ldap.rb, line 120
def parse_dn
@dn = @path[1..-1]
end
parse_query() Show source
私有方法清理attributes
,scope
,filter
和extensions
,从使用该query
部件属性
# File lib/uri/ldap.rb, line 127
def parse_query
@attributes = nil
@scope = nil
@filter = nil
@extensions = nil
if @query
attrs, scope, filter, extensions = @query.split('?')
@attributes = attrs if attrs && attrs.size > 0
@scope = scope if scope && scope.size > 0
@filter = filter if filter && filter.size > 0
@extensions = extensions if extensions && extensions.size > 0
end
end