Módulo: Mongo::Address::Validator Privado
- Incluido en:
- Srv::Resultado, URI
- Definido en:
- lib/mongo/address/validator.rb
Overview
Este módulo forma parte de una API privada. Debe evitar su uso siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Resumen del método de instancia colapsar
-
#validate_address_str!(address_str) ⇒ Object
privado
Toma una string de dirección en formato ipv4/ipv6/nombre de host/ruta de socket y valida su formato.
Detalles del método de instancia
#validar_dirección_str!(dirección_str) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Toma una string de dirección en formato ipv4/ipv6/nombre de host/ruta de socket y valida su formato.
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 |
# Archivo 'lib/mongo/address/validator.rb', línea 27 def validate_address_str!(address_str) caso address_str Cuando /\A\[[\d:]+\](?::(\d+))?\z/ # ipv6 con puerto opcional si port_str = $1 validate_port_str!(port_str) end Cuando /\A\//, /\.sock\z/ # Ruta del socket Unix. # La especificación requiere que validemos que la ruta no tiene ningún carácter sin escapar # barras oblicuas, pero si este fuera el caso, el análisis tendría # ya falló en otra parte porque el URI se habría dividido en # un lugar extraño. # La especificación también permite rutas de sockets relativas y requiere que # Las rutas de socket terminan en ".sock". Aceptamos todas las rutas, excepto casos especiales. # la extensión .sock para evitar que las rutas relativas caigan en el # host:port caso siguiente. Cuando /[\/\[\]]/ # Ni un host:puerto ni una dirección ipv4 con puerto opcional. # Posiblemente una dirección ipv6 defectuosa con, por ejemplo, un delimitador de puerto presente y # puerto faltante o basura extra antes o después. propagar Error::InvalidAddress, "Hostname inválido: #{address_str}" Cuando /:.*:/m propagar Error::InvalidAddress, "No se permiten múltiples delimitadores de puertos: #{address_str}" else # host:puerto o dirección ipv4 con número de puerto opcional host, Puerto = address_str.división(':') si host.¿vacío? propagar Error::InvalidAddress, "Elhost está vacío: #{address_str}" end validate_hostname!(host) si Puerto && Puerto.¿vacío? propagar Error::InvalidAddress, "El puerto está vacío: #{address_str}" end validate_port_str!(Puerto) end end |