Clase: Mongo::URI
- Hereda:
-
Objeto
- Objeto
- Mongo::URI
- Incluye:
- Address::Validator, Loggable
- Definido en:
- lib/mongo/uri.rb,
lib/mongo/uri/srv_protocol.rb,
lib/mongo/uri/options_mapper.rb
Overview
La clase URI proporciona una forma para que los usuarios analicen el uri de MongoDB tal como se define en la especificación del formato de la cadena de conexión.
https://www.mongodb.com/es/docs/manual/reference/connection-string/
Definido bajo Namespace
clase: OptionsMapper, SRVProtocol
Resumen de constantes colapsar
- ESQUEMA =
Obsoleto.
Se eliminará en 3.0.
El esquema de cadena de conexión de mongodb.
'mongodb://'- MONGODB_SCHEME =
El esquema raíz de la cadena de conexión de MongoDB.
'mongodb'- MONGODB_SRV_SCHEME =
El esquema raíz de la cadena de conexión del protocolo srv de MongoDB.
'mongodb+srv'- INVALID_SCHEME =
Obsoleto.
Detalles de error para un esquema inválido.
"Esquema no válido. El esquema debe ser '#{MONGODB_SCHEME}' o '#{MONGODB_SRV_SCHEME}'"- formato =
Especificación del formato URI de MongoDB.
'mongodb://[nombre de usuario:contraseña@]host1[:puerto1][,host2[:puerto2]' + '...[,hostN[:portN]]][/[base de datos][?options]]'
- AYUDA =
URL de documentación del URI de MongoDB (cadena de conexión)
'https://www.mongodb.com/es/docs/manual/reference/connection-string/'- NO SEGURO =
Caracteres no seguros que deben estar codificados en URL.
%r{[:/@]}- PERCENT_CHAR =
Signo de porcentaje que debe ser codificado en las credenciales del usuario.
/%/- UNIX_SOCKET =
Sufijo de socket Unix.
/.sock/- HOST_DELIM =
El carácter que delimita los hosts.
','- HOST_PORT_DELIM =
El carácter que separa un host y un puerto.
':'- DATABASE_DELIM =
El carácter que delimita una base de datos.
'/'- URI_OPTS_DELIM =
Las opciones de delimitación de caracteres.
'?'- INDIV_URI_OPTS_DELIM =
Obsoleto.
El carácter que delimita varias opciones.
'&'- URI_OPTS_VALUE_DELIM =
El carácter que delimita una opción y su valor.
'='- AUTH_USER_PWD_DELIM =
El carácter que separa un nombre de usuario de la contraseña.
':'- AUTH_DELIM =
El carácter que delimita las credenciales de autenticación.
'@'- SCHEME_DELIM =
Delimitador de esquema.
'://'- CREDENTIALS_PLACEHOLDER =
Marcador de posición utilizado en lugar de credenciales de texto sin formato cuando se representa un URI para su visualización, registro o reporte de errores.
'<credentials>'- USERINFO_REDACTION_REGEX =
Coincidencia de patrones en la parte de información de usuario de una cadena de conexión de MongoDB. Se ancla al principio y está limitado al componente de autoridad (se detiene en el primer '/', '?' o '#'), pero coincide de forma codiciosa hasta el último '@' de ese componente, por lo que las contraseñas que contienen un '@' sin escape siguen estando totalmente redactadas. No distingue entre mayúsculas y minúsculas, por lo que también se redacta un esquema inusual como 'MongoDB://'; el analizador lo rechazará y el redactor no debe ser el que filtre las credenciales en el error resultante.
%r{\A(mongodb(?:\+srv)?://)[^/?#]*@}i.freeze
- INVALID_OPTS_VALUE_DELIM =
Detalles del error para un formato de opciones no válido.
'Las opciones y sus valores deben estar delimitados' + " por '#{URI_OPTS_VALUE_DELIM}'"
- UNESCAPED_USER_PWD =
Detalles del error para un nombre de usuario o contraseña sin URLEncoding.
'El nombre de usuario y la contraseña deben estar codificados en URL.'- UNESCAPED_UNIX_SOCKET =
Detalles del error para una ruta de socket Unix no codificada.
'Los sockets de dominio UNIX deben estar codificados en URL.'- UNESCAPED_DATABASE =
Detalles del error de un nombre de base de datos de autenticación que no está codificado en URL.
'La base de datos de autenticación debe estar urlencoded.'- INVALID_OPTS_DELIM =
Detalles del error para proporcionar opciones sin un delimitador de base de datos.
"El delimitador de base de datos '#{DATABASE_DELIM}' debe estar presente si se especifican opciones."- INVALID_HOST =
Detalles del error por un host ausente.
'Falta el host; debe proporcionarse al menos uno.'- PUERTO_INVÁLIDO =
Detalles del error para un puerto no válido.
'Puerto inválido. El puerto debe ser un número entero mayor que 0 y menor que 65536'- READ_MODE_MAP =
Mapa de modos de preferencia de lectura URI a modos de preferencia de lectura del driver Ruby
{ 'primario/a' => primario/a, 'primarypreferred' => :primary_preferred, 'secundario' => secundario, 'secondarypreferred' => preferencia_secundaria, 'más cercano' => :nearest }.freeze
- AUTH_MECH_MAP =
Mapa de mecanismos de autenticación URI a mecanismos del driver de Ruby
{ 'GSSAPI' => :gssapi, 'MONGODB-AWS' => aws, # MONGODB-CR está obsoleto y se eliminará en la versión 3.0del controlador 'MONGODB-CR' => :mongodb_cr, 'MONGODB-X509' => :mongodb_x509, 'PLAIN' => :plain, 'SCRAM-SHA-1' => Schram, 'SCRAM-SHA-256' => :scram256, }.freeze
- SERVER_MONITORING_MODES =
Valores válidos para la opción URI serverMonitoringMode.
%w[Transmisión sondeo auto].freeze
- REPEATABLE_OPTIONS =
Opciones que se permiten que aparezcan más de una vez en el URI.
Para cumplir con el requisito de la especificación de opciones URI de que todas las instancias de 'tls' y 'ssl' tengan el mismo valor, necesitamos realizar un seguimiento de todos los valores que se pasen para esas opciones. Suponiendo que no entren en conflicto, se condensarán en un solo valor inmediatamente después de analizar el URI.
%i[tag_sets ssl]
Constantes incluidas desde Loggable
Resumen de atributos de la instancia colapsar
-
#opciones ⇒ Objeto
Solo lectura
Las opciones de objeto del parser uri.
-
#servidores ⇒ Objeto
Solo lectura
Los servidores especificados en el uri.
-
#uri_options ⇒ objeto
Solo lectura
Mongo::Options::Redacted de las opciones especificadas en el uri.
Resumen del método de clase colapsar
-
.get(string, opts = {}) ⇒ URI, URI::SRVProtocol
Obtiene un objeto URI o un objeto SRVProtocol URI.
-
.redact(string) ⇒ String
Reemplaza la parte de información de usuario de una cadena de conexión de MongoDB con un marcador de posición para que el resultado se pueda registrar, mostrar o incrustar de forma segura en un mensaje de excepción.
Resumen del método de instancia colapsar
-
#client_options ⇒ Mongo::Options::Redacted
Obtiene el hash de opciones que debe pasarse a un Mongo::Client al momento de la creación, para que no tengamos que fusionar las credenciales y la base de datos en ese momento: solo tenemos un único punto aquí.
-
#credenciales ⇒ Hash
Obtén las credenciales proporcionadas en el URI.
-
#database ⇒ String
Obtenga la base de datos proporcionada en el URI.
-
#inicializar(string, options = {}) ⇒ URI
constructor
Crear el nuevo uri a partir de la string proporcionada.
-
#inspect ⇒ string
Devuelve una representación redactada y legible por humanos del URI.
- #srv_registros ⇒ Objeto
-
#to_s ⇒ String
Obtenga la uri como un string con las credenciales redactadas.
Métodos incluidos de Address::Validator
Métodos incluidos desde Registrable
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Detalles del Constructor
#initialize(string, opciones = {}) ⇒ URI
Crear el nuevo uri a partir de la string proporcionada.
313 314 315 316 317 318 319 320 321 322 323 324 325 326 |
# Archivo 'lib/mongo/uri.rb', línea 313 def inicializar(string, = {}) propagar Error::InvalidURI.Nuevo(string, 'La URI debe ser una string, no nula.') a menos que string propagar Error::InvalidURI.Nuevo(string, 'No se puede analizar una URI vacía.') si string.¿vacío? @string = string @options = parsed_scheme, _, restante = string.partición(SCHEME_DELIM) a menos que parsed_scheme == esquema raise_invalid_error!("Esquema inválido '#{parsed_scheme}'. El esquema debe ser '#{MONGODB_SCHEME}'. Utilice URI#get para analizar los URI SRV.") end raise_invalid_error!('No hay hosts en la URI') si restante.¿vacío? parse!(restante) end |
Detalles de atributo de instancias
#opciones ⇒ Objeto (solo lectura)
Las opciones de objeto del parser uri.
37 38 39 |
# Archivo 'lib/mongo/uri.rb', línea 37 def @options end |
#servidores ⇒ Objeto (solo lectura)
Los servidores especificados en el uri.
47 48 49 |
# Archivo 'lib/mongo/uri.rb', línea 47 def servidor @servers end |
#uri_options ⇒ Object (solo lectura)
Mongo::Options::Redacted de las opciones especificadas en el uri.
42 43 44 |
# Archivo 'lib/mongo/uri.rb', línea 42 def @uri_options end |
Detalles del método de clase
.get(string, opts = {}) ⇒ URI, URI::SRVProtocol
Obtiene un objeto URI o un objeto SRVProtocol URI.
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 |
# Archivo 'lib/mongo/uri.rb', línea 262 def sí mismo.Obtener(string, opciones = {}) propagar Error::InvalidURI.Nuevo(string, 'La URI debe ser una string, no nula.') a menos que string propagar Error::InvalidURI.Nuevo(string, 'No se puede analizar una URI vacía.') si string.¿vacío? esquema, = string.partición(SCHEME_DELIM) caso esquema cuando MONGODB_SCHEME URI.Nuevo(string, opciones) cuando MONGODB_SRV_SCHEME SRVProtocol.Nuevo(string, opciones) else propagar Error::InvalidURI.Nuevo(string, "Esquema no válido '#{scheme}'. El esquema debe ser '#{MONGODB_SCHEME}' o '#{MONGODB_SRV_SCHEME}'") end end |
.redact(string) ⇒ String
Reemplaza la parte de información de usuario de una cadena de conexión de MongoDB con un marcador de posición para que el resultado se pueda registrar, mostrar o incrustar de forma segura en un mensaje de excepción.
La entrada se compara como un string, no se analiza, por lo que es seguro llamar a esto en URI con formato incorrecto (que es exactamente cuando se genera InvalidURI).
243 244 245 246 247 |
# Archivo 'lib/mongo/uri.rb', línea 243 def sí mismo.redact(string) return string a menos que string.is_a?(String) string.sub(USERINFO_REDACTION_REGEX, "\\1#{CREDENTIALS_PLACEHOLDER}@") end |
Detalles del método de instancia
#client_options ⇒ Mongo::Options::Redacted
Obtiene el hash de opciones que debe pasarse a un Mongo::Client al momento de la creación, para que no tengamos que fusionar las credenciales y la base de datos en ese momento: solo tenemos un único punto aquí.
288 289 290 291 292 293 294 |
# Archivo 'lib/mongo/uri.rb', línea 288 def opciones = .tocar hacer |opciones| opciones[:database] = @database si @database end @user ? opciones.fusionar(credenciales) : opciones end |
#credenciales ⇒ Hash
Obtén las credenciales proporcionadas en el URI.
338 339 340 |
# Archivo 'lib/mongo/uri.rb', línea 338 def credenciales { usuario: @user, Contraseña: @password } end |
#database ⇒ String
Obtenga la base de datos proporcionada en el URI.
350 351 352 |
# Archivo 'lib/mongo/uri.rb', línea 350 def database @database || Database::ADMIN end |
#inspect ⇒ String
Devuelve una representación redactada y legible por humanos del URI. El objeto#inspect por defecto haría un vaciado de @string y @password como variables de instancia, filtrando las credenciales.
373 374 375 |
# Archivo 'lib/mongo/uri.rb', línea 373 def inspeccionar "#<#{self.clase.name}: #{reconstruct_uri}>" end |
#srv_records → Objeto
296 297 298 |
# Archivo 'lib/mongo/uri.rb', línea 296 def srv_records nulo end |
#to_s ⇒ String
Obtenga la uri como un string con las credenciales redactadas.
Las credenciales se sustituyen por CREDENTIALS_PLACEHOLDER para que el resultado sea seguro de registro o mostrar. Utilice credenciales para recuperar el usuario y la contraseña originales.
364 365 366 |
# Archivo 'lib/mongo/uri.rb', línea 364 def to_s reconstruct_uri end |