Classe: Mongo::URI::OptionsMapper Private
- Herda:
-
Objeto
- Objeto
- Mongo::URI::OptionsMapper
- Inclui:
- Logável
- Definido em:
- lib/mongo/uri/options_mapper.rb
Visão geral
Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.
Executa mapeamento entre opções de URI e opções de Ruby.
Esta classe contém:
- O mapeamento definindo como as opções de URI são convertidas em opções de Ruby.
- O mapeamento de nomes de opções de URI em minúsculas para nomes de opções de URI em maiúsculas e minúsculas canônicas.
- Métodos para executar a conversão de valores de opção URI para valores de opção Ruby (os métodos convert_*). Estes geralmente avisam e retornam nulo quando a entrada fornecida é inválida.
- Métodos para realizar a conversão de valores de opção Ruby em opções padronizadas do MongoClient (métodos revert_*). Eles pressupõem que a entrada é válida e geralmente não realizam validação.
Os nomes das opções de URI não diferenciam maiúsculas de minúsculas. As opções Ruby são especificadas como símbolos (embora nas opções do cliente usem acesso indiferente).
Colapsode resumo constante
- URI_OPTION_MAP =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.
Hash para armazenar mapa dos parâmetros de opção de URI para estratégias de conversão
{}
- URI_OPTION_CANONical_NAMES =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.
Retorna o mapa de nomes de opções de URI em letras minúsculas para canônicos.
{}
Constantes incluídas do Loggable
Recolhimento do Resumo do atributo de instância
-
#opções ➤ Hash
Somente leitura
privado
As opções.
Recolhimento do Resumo do método de classe
-
.uri_option(uri_key, nome, **extra) ➤ Objeto
privado
Dsl interno simples para registrar uma opção de URI MongoDB no URI_OPTION_MAP.
Recolhimento do Resumo do método de instância
-
#add_uri_option(key, value, uri_options) ➤ Object
privado
Adiciona uma opção ao hash de opções de uri.
-
#initialize(**opts) ⇒ OptionsMapper
construtor
privado
Instancia o mapeador de opções.
-
#ruby_to_smc(opts) ➤ Hash
privado
Converte as opções Ruby fornecidas em "opções padronizadas do MongoClient".
-
#ruby_to_string(opts) ➤ Hash
privado
Converte as opções Ruby fornecidas para sua representação em uma string URI.
- #smc_to_ruby(opts) ➤ Objeto privado
Métodos incluídos no Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger
Detalhes do construtor
#initialize(**opts) ⇒ OptionsMapper
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.
Instancia o mapeador de opções.
43 44 45 |
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 43 def inicializar(**opciona) @opções = opciona end |
Detalhes do atributo da instância
#opções ➤ Hash (somente leitura)
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.
Retorna as opções.
48 49 50 |
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 48 def @opções end |
Detalhes do método de classe
.uri_option(uri_key, nome, **extra) ⇒ 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.
Dsl interno simples para registrar uma opção de URI MongoDB no URI_OPTION_MAP.
205 206 207 208 |
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 205 def auto.uri_option(uri_key, name, **Extra) URI_OPTION_MAP[uri_key.downcase] = { nome: name }.update(Extra) URI_OPTION_CANONical_NAMES[uri_key.downcase] = uri_key end |
Detalhes do método de instância
#add_uri_option(key, value, uri_options) ➤ Object
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.
Adiciona uma opção ao hash de opções de uri.
Acquires a target for the option based on group.
Transforms the value.
Merges the option into the target.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 59 def add_uri_option(chave, valor, ) estratégia = URI_OPTION_MAP[chave.downcase] se estratégia.nada? log_service("Opção de URI não suportada '#{key}' no URI '#{@string}'. Ela será ignorada.") Método end grupo, grupo = estratégia[:group] Alvo = se grupo, grupo [grupo, grupo] || {} mais end valor = apply_transform(chave, valor, estratégia[:type]) # Às vezes, o valor aqui seria nulo, por exemplo, se estivermos processando # tags de preferência de leitura ou propriedades do mecanismo de autenticação e todos os # dados são inválidos. Ignore essas opções. mesclar_uri_option(Alvo, valor, estratégia[:name]) a menos que valor.nada? Método a menos que grupo, grupo && !Alvo.vazio? && !.chave?(grupo, grupo) [grupo, grupo] = Alvo end |
#ruby_to_smc(opts) ➤ Hash
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.
Converte as opções Ruby fornecidas em "opções padronizadas do MongoClient".
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 |
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 117 def ruby_to_smc(opciona) rv = {} URI_OPTION_MAP.cada fazer |uri_key, especificações| se especificações[:group] v = opciona[especificações[:group]] v &&= v[especificações[:name]] mais v = opciona[especificações[:name]] end próximo se v.nada? se type = especificações[:type] v = enviar("revert_#{type}", v) end canonical_key = URI_OPTION_CANONical_NAMES[uri_key] aumentar ArgumentError, "A opção #{uri_key} não é conhecida" a menos que canonical_key rv[canonical_key] = v end # Para opções que têm como padrão verdadeiro, remova o valor se for verdadeiro. %w[retryReads retryWrites].cada fazer |k| rv.excluir(k) se rv[k] end # Remover a fonte de autenticação quando for $external para mecanismos padrão # (ou exigir) essa fonte de autenticação. rv.excluir('authSource') se %w[MONGODB-AWS].incluir?(rv['authMechanism']) && rv['authSource'] == '$external' # ssl e tls são aliases, remova os ssl rv.excluir('ssl') # TODO: remova authSource se for o mesmo que o banco de dados, # requer este método para conhecer o banco de dados especificado no cliente. rv end |
#ruby_to_string(opts) ➤ Hash
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.
Converte as opções Ruby fornecidas para sua representação em uma string URI.
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 |
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 155 def ruby_to_string(opciona) rv = {} URI_OPTION_MAP.cada fazer |uri_key, especificações| se especificações[:group] v = opciona[especificações[:group]] v &&= v[especificações[:name]] mais v = opciona[especificações[:name]] end próximo se v.nada? se type = especificações[:type] v = enviar("stringify_#{type}", v) end canonical_key = URI_OPTION_CANONical_NAMES[uri_key] aumentar ArgumentError, "A opção #{uri_key} não é conhecida" a menos que canonical_key rv[canonical_key] = v end # Para opções que têm como padrão verdadeiro, remova o valor se for verdadeiro. %w[retryReads retryWrites].cada fazer |k| rv.excluir(k) se rv[k] end # Remover a fonte de autenticação quando for $external para mecanismos padrão # (ou exigir) essa fonte de autenticação. rv.excluir('authSource') se %w[MONGODB-AWS].incluir?(rv['authMechanism']) && rv['authSource'] == '$external' # ssl e tls são aliases, remova os ssl rv.excluir('ssl') # TODO: remova authSource se for o mesmo que o banco de dados, # requer este método para conhecer o banco de dados especificado no cliente. rv end |
#smc_to_ruby(opts) ➤ 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.
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 |
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 83 def smc_to_ruby(opciona) = {} opciona.cada fazer |chave, valor| estratégia = URI_OPTION_MAP[chave.downcase] se estratégia.nada? log_service("Opção de URI não suportada '#{key}' no URI '#{@string}'. Ela será ignorada.") Método end grupo, grupo = estratégia[:group] Alvo = se grupo, grupo [grupo, grupo] || {} mais end valor = apply_transform(chave, valor, estratégia[:type]) # Às vezes, o valor aqui seria nulo, por exemplo, se estivermos processando # tags de preferência de leitura ou propriedades do mecanismo de autenticação e todos os # dados são inválidos. Ignore essas opções. mesclar_uri_option(Alvo, valor, estratégia[:name]) a menos que valor.nada? [grupo, grupo] = Alvo se grupo, grupo && !Alvo.vazio? && !.chave?(grupo, grupo) end end |