模块:Mongo::Address::Validator Private

包含在:
Srv::ResultURI
定义于:
lib/ Mongo/ 解决/validator.rb

Overview

该模块是私有 API 的一部分。 您应尽可能避免使用此模块,因为它将来可能会被删除或更改。

由于:

  • 2.0.0

实例方法摘要折叠

实例方法详细信息

# validate_address_str! (address_str) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

获取 ipv4/ipv6/hostname/socket 路径格式的地址string并验证其格式。

由于:

  • 2.0.0



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