class Bundler::URI::LDAP
LDAP
Bundler::URI
SCHEMA(在 RFC2255 中描述)。
常量
- COMPONENT
一个
Bundler::URI::LDAP
的可用组件数组。- DEFAULT_PORT
Bundler::URI::LDAP
的默认端口为 389。- SCOPE
起始点可用的范围。
-
SCOPE_BASE - 基本 DN
-
SCOPE_ONE - 基本 DN 下一级,不包括基本 DN,也不包括其下的任何条目
-
SCOPE_SUB - 子树,所有级别的所有条目
-
公共类方法
描述¶ ↑
从组件创建新的 Bundler::URI::LDAP
对象,并进行语法检查。
接受的组件有 host、port、dn、attributes、scope、filter 和 extensions。
组件应该以数组形式提供,或者以键由组件名称前加冒号组成的哈希形式提供。
如果使用数组,则组件必须按照 [host, port, dn, attributes, scope, filter, extensions]
的顺序传递。
示例
uri = Bundler::URI::LDAP.build({:host => 'ldap.example.com', :dn => '/dc=example'}) uri = Bundler::URI::LDAP.build(["ldap.example.com", nil, "/dc=example;dc=com", "query", nil, nil, nil])
Bundler::URI::Generic::build
# File bundler/vendor/uri/lib/uri/ldap.rb, line 74 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
描述¶ ↑
根据 RFC 2396,从通用的 Bundler::URI
组件创建一个新的 Bundler::URI::LDAP
对象。不执行特定于 LDAP 的语法检查。
参数顺序为 scheme
、userinfo
、host
、port
、registry
、path
、opaque
、query
和 fragment
。
示例
uri = Bundler::URI::LDAP.new("ldap", nil, "ldap.example.com", nil, nil, "/dc=example;dc=com", nil, "query", nil)
另请参阅 Bundler::URI::Generic.new
。
Bundler::URI::Generic::new
# File bundler/vendor/uri/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。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 178 def attributes @attributes end
attributes 的设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 191 def attributes=(val) set_attributes(val) val end
返回 dn。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 159 def dn @dn end
dn 的设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 172 def dn=(val) set_dn(val) val end
返回 extensions。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 235 def extensions @extensions end
extensions 的设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 248 def extensions=(val) set_extensions(val) val end
返回 filter。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 216 def filter @filter end
filter 的设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 229 def filter=(val) set_filter(val) val end
检查 Bundler::URI
是否有路径。对于 Bundler::URI::LDAP
,这将返回 false
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 255 def hierarchical? false end
返回 scope。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 197 def scope @scope end
scope 的设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 210 def scope=(val) set_scope(val) val end
受保护的实例方法
attributes 的私有设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 183 def set_attributes(val) @attributes = val build_path_query @attributes end
dn 的私有设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 164 def set_dn(val) @dn = val build_path_query @dn end
extensions 的私有设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 240 def set_extensions(val) @extensions = val build_path_query @extensions end
filter 的私有设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 221 def set_filter(val) @filter = val build_path_query @filter end
scope 的私有设置器 val
。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 202 def set_scope(val) @scope = val build_path_query @scope end
私有实例方法
从 attributes
、scope
、filter
和 extensions
组装 query
的私有方法。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 146 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
从使用 path
组件属性中清理 dn
的私有方法。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 120 def parse_dn raise InvalidURIError, 'bad LDAP URL' unless @path @dn = @path[1..-1] end
从使用 query
组件属性中清理 attributes
、scope
、filter
和 extensions
的私有方法。
# File bundler/vendor/uri/lib/uri/ldap.rb, line 128 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