Classe: Mongo::URI::OptionsMapper Private

Herda:
Objeto
  • Objeto
mostrar tudo
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).

Desde:

  • 2.0.0

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

Desde:

  • 2.0.0

{}
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.

Retorna:

  • (Hash<String, String>)

    Mapear de nomes de opções de URI em minúsculas para canônicos.

Desde:

  • 2.0.0

{}

Constantes incluídas do Loggable

Loggable::Prefix

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de classe

Recolhimento do Resumo do método de instância

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.

Parâmetros:

  • opciona (Hash)

    um conjunto personalizável de opções

Hash de opções (**opts):

  • :logger (Registrador)

    Um registrador personalizado para usar.

Desde:

  • 2.0.0



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çõesHash (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.

Retorna:

  • (Hash)

    As opções.

Desde:

  • 2.0.0



48
49
50
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 48

def opções
  @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.

Parâmetros:

  • uri_key (string)

    A opção de URI MongoDB para registrar.

  • name (Símbolo)

    O nome da opção no driver.

  • Extra (Hash)

    Opções extras.

    • :group [ Símbolo ] Hash aninhado com hash para onde a opção irá.
    • :type [ Símbolo ] Nome da função para transformar valor.

Desde:

  • 2.0.0



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.

Parâmetros:

  • chave (string)

    Nome da opção de URI.

  • valor (string)

    O valor da opção.

  • uri_options (Hash)

    O destino da opção 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
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 59

def add_uri_option(chave, valor, uri_options)
  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
             uri_options[grupo, grupo] || {}
           mais
             uri_options
           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? && !uri_options.chave?(grupo, grupo)

  uri_options[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".

Parâmetros:

  • opciona (Hash)

    Opções de Ruby para converter.

Retorna:

  • (Hash)

    Opções padronizadas do MongoClient.

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
# 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.

Parâmetros:

  • opciona (Hash)

    Opções de Ruby para converter.

Retorna:

  • (Hash)

    Hash da 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
# 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.

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
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 83

def smc_to_ruby(opciona)
  uri_options = {}

  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
               uri_options[grupo, grupo] || {}
             mais
               uri_options
             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?

    uri_options[grupo, grupo] = Alvo se grupo, grupo && !Alvo.vazio? && !uri_options.chave?(grupo, grupo)
  end

  uri_options
end