Módulo: Mongo::Address::Validator Private
- Incluido en:
- Srv::Resultado, URI
- Definido en:
- lib/mongo/dirección/validador.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.
Colapso del resumen del método de instancia
-
#validate_address_str!(address_str) ⇒ Objeto
privada
Toma una cadena de dirección en formato ipv4/ipv6/nombre de host/ruta de socket y valida su formato.
Detalles del método de instancia
#validate_address_str!(address_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 cadena 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!(dirección_str) caso dirección_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 tenga caracteres sin escapar. # barras, pero si este fuera el caso, el análisis tendría # ya falló en otro lugar porque la 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 # caso host:puerto a continuación. 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, "Nose permiten delimitadores de puertos múltiples: #{address_str}" else # host:puerto o dirección ipv4 con número de puerto opcional host, Puerto = dirección_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 |