Clase: Mongo::URI::OptionsMapper Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Registrable
Definido en:
lib/mongo/uri/options_mapper.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Realiza la asignación entre opciones de URI y opciones de Ruby.

Esta clase contiene:

  • El mapeo que define cómo se convierten las opciones URI a opciones Ruby.
  • El mapeo de los nombres de opciones URI en minúsculas a los nombres de opciones URI en mayúsculas canónicos.
  • Métodos para realizar la conversión de valores de opciones URI a valores de opciones Ruby (los métodos convert_*). Por lo general, estos advierten y devuelven nil cuando la entrada proporcionada es inválida.
  • Métodos para realizar la conversión de valores de opciones de Ruby a opciones estandarizadas de MongoClient (métodos revert_*). Estos suponen que la entrada es válida y, por lo general, no realizan validación.

Los nombres de las opciones URI no distinguen mayúsculas de minúsculas. Las opciones de Ruby se especifican como símbolos (aunque en las opciones de cliente se usa acceso indiferente).

Desde:

  • 2.0.0

Resumen de constantes colapsar

URI_OPTION_MAP =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

Hash para almacenar el mapa de los parámetros de opciones URI a las estrategias de conversión

Desde:

  • 2.0.0

{}
URI_OPTION_CANONICAL_NAMES =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

Devuelve un mapa de los nombres de las opciones URI en minúsculas a los nombres canónicos.

Devuelve:

  • (Hash<String, String>)

    Mapa de minúsculas a nombres de opciones URI canónicas.

Desde:

  • 2.0.0

{}

Constantes incluidas desde Loggable

Loggable::PREFIX

Resumen de atributos de la instancia colapsar

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Métodos incluidos desde Registrable

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

Detalles del Constructor

#initialize(**opts) ⇒ OptionsMapper

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Instancia el mapeador de opciones.

Parámetros:

  • opciones (encriptada)

    un conjunto personalizable de opciones

Hash de opciones (**opts):

  • :logger (Logger)

    Un registrador personalizado para usar.

Desde:

  • 2.0.0



43
44
45
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 43

def inicializar(**opciones)
  @options = opciones
end

Detalles de atributo de instancias

#opcionesHash (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve las opciones.

Devuelve:

  • (encriptada)

    Las opciones.

Desde:

  • 2.0.0



48
49
50
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 48

def opciones
  @options
end

Detalles del método de clase

.uri_option(uri_key, nombre, **extra) ⇒ Object

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Pequeño DSL interno para registrar una opción de URI de MongoDB en el URI_OPTION_MAP.

Parámetros:

  • uri_key (string)

    La opción URI de MongoDB para registrar.

  • Nombre (Símbolo)

    El nombre de la opción en el driver.

  • extra (encriptada)

    Opciones adicionales.

    • :group [Symbol] Hash anidado donde irá la opción.
    • :type [ Symbol ] Nombre de la función para transformar el valor.

Desde:

  • 2.0.0



205
206
207
208
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 205

def sí mismo.uri_option(uri_key, Nombre, **extra)
  URI_OPTION_MAP[uri_key.minúscula] = { nombre: Nombre }.update(extra)
  NOMBRES_CANÓNICOS_OPCIÓN_URI[uri_key.minúscula] = uri_key
end

Detalles del método de instancia

#add_uri_option(clave, valor, uri_options) ⇒ Object

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Agrega una opción al hash de opciones de URI.

Acquires a target for the option based on group.
Transforms the value.
Merges the option into the target.

Parámetros:

  • llave (string)

    Nombre de la opción URI.

  • Valor (string)

    El valor de la opción.

  • uri_options (encriptada)

    El objetivo de la opción base.

Desde:

  • 2.0.0



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 59

def add_uri_option(llave, Valor, uri_options)
  estrategia = URI_OPTION_MAP[llave.minúscula]
  si estrategia.nil?
    log_warn("Opción de URI no soportada '#{key}' en URI '#{@string}'. Será ignorada.")
    return
  end

  group = estrategia[:grupo]
  Objetivo = si group
             uri_options[group] || {}
           else
             uri_options
           end
  Valor = apply_transform(llave, Valor, estrategia[Tipo])
  # A veces el valor aquí podría ser nulo, por ejemplo si estamos procesamiento
  # leer las etiquetas de preferencia de lectura o las propiedades del mecanismo de autenticación y todas las
  # los datos son inválidos. Ignora tales opciones.
  merge_uri_option(Objetivo, Valor, estrategia[nombre]) a menos que Valor.nil?

  return a menos que group && !Objetivo.¿vacío? && !uri_options.key?(group)

  uri_options[group] = Objetivo
end

#ruby_to_smc(opts) ⇒ Hash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Convierte las opciones de Ruby proporcionadas en «opciones de MongoClient estandarizadas».

Parámetros:

  • opciones (encriptada)

    Opciones de Ruby para convertir.

Devuelve:

  • (encriptada)

    Opciones del MongoClient estandarizadas.

Desde:

  • 2.0.0



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 117

def ruby_to_smc(opciones)
  rv = {}
  URI_OPTION_MAP.cada hacer |uri_key, especificación|
    si especificación[:grupo]
      v = opciones[especificación[:grupo]]
      v &&= v[especificación[nombre]]
    else
      v = opciones[especificación[nombre]]
    end
    Next si v.nil?

    si tipo = especificación[Tipo]
      v = enviar("revert_#{type}", v)
    end
    canonical_key = NOMBRES_CANÓNICOS_OPCIÓN_URI[uri_key]
    propagar ArgumentError, "Opción #{uri_key} no es conocida" a menos que canonical_key

    rv[canonical_key] = v
  end
  # Para las opciones que son por defecto verdaderas, remueve el valor si es verdadero.
  %w[retryReads retryWrites].cada hacer |k|
    rv.borrar(k) si rv[k]
  end
  # Remover la fuente de autenticación cuando sea $external para mecanismos que estén por defecto
  # (o require) esa fuente de autenticación.
  rv.borrar('authSource') si %w[MONGODB-AWS].incluir?(rv['authMechanism']) && rv['authSource'] == '$external'
  # ssl y tls son alias, remueva los de ssl
  rv.borrar('ssl')
  # TODO: remover authSource si es igual a la base de datos,
  # requiere este método para conocer la base de datos especificada en el cliente.
  rv
end

#ruby_a_cadena(opts) ⇒ Hash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Convierte las opciones Ruby proporcionadas a su representación en una string URI.

Parámetros:

  • opciones (encriptada)

    Opciones de Ruby para convertir.

Devuelve:

  • (encriptada)

    Hash de string URI.

Desde:

  • 2.0.0



155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 155

def ruby_to_string(opciones)
  rv = {}
  URI_OPTION_MAP.cada hacer |uri_key, especificación|
    si especificación[:grupo]
      v = opciones[especificación[:grupo]]
      v &&= v[especificación[nombre]]
    else
      v = opciones[especificación[nombre]]
    end
    Next si v.nil?

    si tipo = especificación[Tipo]
      v = enviar("stringify_#{tipo}", v)
    end
    canonical_key = NOMBRES_CANÓNICOS_OPCIÓN_URI[uri_key]
    propagar ArgumentError, "Opción #{uri_key} no es conocida" a menos que canonical_key

    rv[canonical_key] = v
  end
  # Para las opciones que son por defecto verdaderas, remueve el valor si es verdadero.
  %w[retryReads retryWrites].cada hacer |k|
    rv.borrar(k) si rv[k]
  end
  # Remover la fuente de autenticación cuando sea $external para mecanismos que estén por defecto
  # (o require) esa fuente de autenticación.
  rv.borrar('authSource') si %w[MONGODB-AWS].incluir?(rv['authMechanism']) && rv['authSource'] == '$external'
  # ssl y tls son alias, remueva los de ssl
  rv.borrar('ssl')
  # TODO: remover authSource si es igual a la base de datos,
  # requiere este método para conocer la base de datos especificada en el cliente.
  rv
end

#smc_to_ruby(opts) ⇒ Objeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Archivo 'lib/mongo/uri/options_mapper.rb', línea 83

def smc_to_ruby(opciones)
  uri_options = {}

  opciones.cada hacer |llave, Valor|
    estrategia = URI_OPTION_MAP[llave.minúscula]
    si estrategia.nil?
      log_warn("Opción de URI no soportada '#{key}' en URI '#{@string}'. Será ignorada.")
      return
    end

    group = estrategia[:grupo]
    Objetivo = si group
               uri_options[group] || {}
             else
               uri_options
             end

    Valor = apply_transform(llave, Valor, estrategia[Tipo])
    # A veces el valor aquí podría ser nulo, por ejemplo si estamos procesamiento
    # leer las etiquetas de preferencia de lectura o las propiedades del mecanismo de autenticación y todas las
    # los datos son inválidos. Ignora tales opciones.
    merge_uri_option(Objetivo, Valor, estrategia[nombre]) a menos que Valor.nil?

    uri_options[group] = Objetivo si group && !Objetivo.¿vacío? && !uri_options.key?(group)
  end

  uri_options
end