Módulo: Mongo::Address::Validator Private

Incluído em:
SRV::Result, URI
Definido em:
build/ruby-driver-v2.19/lib/mongo/address/validator.rb

Visão geral

Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#validate_address_str!(address_str) 3 Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Pega uma string de endereço no formato ipv4/ipv6/hostname/socket e valida seu formato.

Desde:

  • 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 'build/ruby-driver-v2.19/lib/mongo/address/validator.rb', linha 27

def validate_address_str!(endereço_str)
  caso endereço_str
  quando /\A\[[\d:]+\](?::(\d+))?\z/
    # ipv6 com porta opcional
    se port_str = $1
      validate_port_str!(port_str)
    end
  quando /\A\//, /\.sock\z/
    # Caminho do soquete Unix.
    # A especificação exige que validemos se o caminho não tem escape
    # barras, mas se esse fosse o caso, a análise teria
    # já falhou em outro lugar porque o URI teria sido dividido em
    # um lugar estranho.
    # A especificação também permite caminhos de soquete relativos e exige que
    Os caminhos do #soquete terminam em ".sock". Aceitamos todos os caminhos, exceto caso especial
    # the .sock extensão para evitar caminhos relativos que caiam no
    # caso host:port abaixo.
  quando /[\/\[\]]/
    # Não é um host:port nem um endereço ipv4 com porta opcional.
    # Endereço ipv6 possivelmente comprometido com, por exemplo, delimitador de porta presente e
    # porta ausente ou lixo extra antes ou depois.
    aumentar Erro::Endereço inválido,
      "Nome de host inválido: #{endereço_str}"
  quando /:.*:/m
    aumentar Erro::Endereço inválido,
      "Vários delimitadores de porta não são permitidos: #{endereço_str}"
  mais
    # host:port ou endereço ipv4 com número de porta opcional
    Anfitrião, Porta = endereço_str.dividir(':')
    se Anfitrião.vazio?
      aumentar Erro::Endereço inválido, "O host está vazio: #{endereço_str}"
    end

    validate_hostname!(Anfitrião)

    se Porta && Porta.vazio?
      aumentar Erro::Endereço inválido, "A porta está vazia: #{endereço_str}"
    end

    validate_port_str!(Porta)
  end
end