模块:Mongo::Address::Validator Private
- 包含在:
- Srv::Result , URI
- 定义于:
- lib/ Mongo/ 解决/validator.rb
Overview
该模块是私有 API 的一部分。 您应尽可能避免使用此模块,因为它将来可能会被删除或更改。
实例方法摘要折叠
-
# validate_address_str! (address_str) ⇒ 对象
private
获取 ipv4/ipv6/hostname/socket 路径格式的地址string并验证其格式。
实例方法详细信息
# validate_address_str! (address_str) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
获取 ipv4/ipv6/hostname/socket 路径格式的地址string并验证其格式。
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/ Mongo/ 解决/validator.rb', line 27 def validate_address_str!(Address_str) 案例 Address_str when / \A\[[\d:]+\](?::(\d+))?\z / # ipv 6 ,带有可选端口 if port_str = $1 validate_port_str!(port_str) end when / \A\/ /, /\.sock\z/ _ _ # Unix 套接字路径。 # 规范要求我们验证路径是否包含未转义的 # 斜杠,但如果是这种情况,解析就会有 # 在其他地方已经失败,因为 URI 会被拆分为 # 一个奇怪的地方。 # 该规范还允许相对套接字路径,并要求 # 套接字路径以“.sock”结尾。 我们接受除特殊情况外的所有路径 # .sock 扩展以避免相对路径落入 # host:port 案例如下。 when / [\/\[\]] / # 不是主机:端口,也不是带有可选端口的 ipv 4地址。 # Possible botped ipv 6地址,例如 存在端口分隔符,并且 # 端口缺失,或者前后有多余的垃圾内容。 提高 错误::InvalidAddress, "无效的主机名: #{ address_str } " when / :.*: /m 提高 错误::InvalidAddress, "不允许使用多个端口分隔符: #{ Address_str } " else # host:port 或带有可选端口号的 ipv 4地址 主机, 端口 = Address_str.拆分(' : ') if 主机.空? 提高 错误::InvalidAddress, "主机为空: #{ address_str } " end validate_hostname!(主机) if 端口 && 端口.空? 提高 错误::InvalidAddress, "端口为空: #{ address_str } " end validate_port_str!(端口) end end |