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

Resumo constante

Constantes incluídas do Loggable

Loggable::Prefix

Recolhimento do Resumo do atributo de instância

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



46
47
48
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 46

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



51
52
53
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 51

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



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 62

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.
  a menos que valor.nada?
    mesclar_uri_option(Alvo, valor, estratégia[:name])
  end

  se grupo, grupo && !Alvo.vazio? && !uri_options.chave?(grupo, grupo)
    uri_options[grupo, grupo] = Alvo
  end
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



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 126

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 && v[especificações[:name]]
    mais
      v = opciona[especificações[:name]]
    end
    a menos que v.nada?
      se type = especificações[:type]
        v = enviar("revert_#{type}", v)
      end
      canonical_key = URI_OPTION_CANONical_NAMES[uri_key]
      a menos que canonical_key
        aumentar ArgumentError, "A opção #{uri_key} não é conhecida"
      end
      rv[canonical_key] = v
    end
  end
  # Para opções que têm como padrão verdadeiro, remova o valor se for verdadeiro.
  %w(retryReads retryWrites).cada fazer |k|
    se rv[k]
      rv.excluir(k)
    end
  end
  # Remover a fonte de autenticação quando for $external para mecanismos padrão
  # (ou exigir) essa fonte de autenticação.
  se %w(MONGODB-AWS).incluir?(rv['authMechanism']) && rv['authSource'] == '$external'
    rv.excluir('authSource')
  end
  # ssl e tls são aliases, remova os ssl
  rv.excluir('ssl')
  #TODO remover authSource se for o mesmo do 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



169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 169

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 && v[especificações[:name]]
    mais
      v = opciona[especificações[:name]]
    end
    a menos que v.nada?
      se type = especificações[:type]
        v = enviar("stringify_#{type}", v)
      end
      canonical_key = URI_OPTION_CANONical_NAMES[uri_key]
      a menos que canonical_key
        aumentar ArgumentError, "A opção #{uri_key} não é conhecida"
      end
      rv[canonical_key] = v
    end
  end
  # Para opções que têm como padrão verdadeiro, remova o valor se for verdadeiro.
  %w(retryReads retryWrites).cada fazer |k|
    se rv[k]
      rv.excluir(k)
    end
  end
  # Remover a fonte de autenticação quando for $external para mecanismos padrão
  # (ou exigir) essa fonte de autenticação.
  se %w(MONGODB-AWS).incluir?(rv['authMechanism']) && rv['authSource'] == '$external'
    rv.excluir('authSource')
  end
  # ssl e tls são aliases, remova os ssl
  rv.excluir('ssl')
  #TODO remover authSource se for o mesmo do 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



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Arquivo 'lib/mongo/uri/options_mapper.rb', linha 88

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.
    a menos que valor.nada?
      mesclar_uri_option(Alvo, valor, estratégia[:name])
    end

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

  uri_options
end