Classe: Mongo::URI

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Endereço::Validator, Loggable
Definido em:
lib/mongo/uri.rb,
lib/mongo/uri/srv_protocol.rb,
lib/mongo/uri/options_mapper.rb

Visão geral

A classe URI fornece uma maneira de os usuários analisarem o uri do MongoDB conforme definido na especificação do formato da connection string.

https://www.mongodb.com/pt-br/docs/manual/reference/connection-string/

Exemplos:

Use a string uri para fazer uma conexão com o cliente .

uri = Mongo::URI.new('mongodb://localhost:27017')
client = Mongo::Client.new(uri.servers, uri.options)
client.(uri.credentials)
client[uri.database]

Desde:

  • 2.0.0

Definido sob namespace

Classes: OptionsMapper, SRVProtocol

Colapsode resumo constante

ESQUEMA =
Obsoleto.

Será removido em 3.0.

O MongoDB string esquema de connection do .

Desde:

  • 2.0.0

'mongodb://'
MONGODB_SCHEME =

A MongoDB raiz do esquema string de connection do .

Desde:

  • 2.5.0

'mongodb'
MONGODB_SRV_SCHEME =

A MongoDB string raiz do esquema de connection do protocolo srv.

Desde:

  • 2.5.0

'MongoDB+srv'
INVALID_SCHEME =
Obsoleto.

Detalhes de erro para um esquema inválido.

Desde:

  • 2.1.0

"Esquema inválido. O esquema deve ser '#{MONGODB_SCHEME}' ou '#{MONGODB_SRV_SCHEME}'"
FORMATO =

Especificação de formato URI MongoDB.

Desde:

  • 2.0.0

'MongoDB://[username:password@]host1[:port1][,host2[:port2]' +
',...[,hostN[:portN]]][/[banco de dados][?options]]'
AJUDA =

URL de documentação do MongoDB URI (connection string)

Desde:

  • 2.0.0

'https://www.mongodb.com/pt-br/docs/manual/reference/connection-string/'
NÃO SEGURO =

Caracteres não seguros que devem ser codificados em URL.

Desde:

  • 2.1.0

%r{[:/@]}
PERCENT_CHAR =

Sinal de porcentagem que deve ser codificado nas credenciais do usuário.

Desde:

  • 2.5.1

/%/
UNIX_SOCKET =

Sufixo de soquete Unix.

Desde:

  • 2.1.0

/.sock/
HOST_DELIM =

Os hosts delimitadores de caracteres.

Desde:

  • 2.1.0

','
HOST_PORT_DELIM =

O caractere que separa um host e uma porta.

Desde:

  • 2.1.0

':'
DATABASE_DELIM =

O caractere delimitando um banco de dados.

Desde:

  • 2.1.0

'/'
URI_OPTS_DELIM =

As opções de delimitação de caracteres.

Desde:

  • 2.1.0

'?'
INDIV_URI_OPTS_DELIM =
Obsoleto.

O caractere delimitando várias opções.

Desde:

  • 2.1.0

'&'
URI_OPTS_VALUE_DELIM =

O caractere delimitando uma opção e seu valor.

Desde:

  • 2.1.0

'='
AUTH_USER_PWS_DELIM =

O caractere que separa um nome de usuário da senha.

Desde:

  • 2.1.0

':'
AUTH_DELIM =

Os caracteres que delimitam as credenciais de autenticação.

Desde:

  • 2.1.0

'@'
SCHEME_DELIM =

Delimitador de esquema.

Desde:

  • 2.5.0

'://'
CREDENTIALS_PLACEHOLDER =

Espaço reservado usado no lugar de credenciais de texto simples quando um URI é renderizado para exibição, registro ou relatório de erros.

Desde:

  • 2.0.0

'<credentials>'
USERINFO_REDACTION_REGEX =

Correspondência de padrões na parte userinfo de uma string de conexão do MongoDB. Ancora no início e é delimitado ao componente de autoridade (para no primeiro '/', '?' ou '#'), mas corresponde gananciosamente até o último '@' nesse componente para que as senhas que contêm um '@' não escapado ainda sejam totalmente redigidas. Não diferencia maiúsculas de minúsculas, portanto, um esquema incomum como 'MongoDB://' também é redigido — o analisador o rejeitará e o redator não deve ser o que vaza as credenciais no erro resultante.

Desde:

  • 2.0.0

%r{\A(mongodb(?:\+srv)?://)[^/?#]*@}i.congelar
INVALID_OPTS_VALUE_DELIM =

Detalhes de erro para um formato de opções inválido.

Desde:

  • 2.1.0

'As opções e seus valores devem ser delimitados ' +
" por '#{URI_OPTS_VALUE_DELIM}'"
UNESCAPED_USER_PWD =

Detalhes de erro para um nome de usuário ou senha sem código URL.

Desde:

  • 2.1.0

'O nome de usuário e a senha devem ser codificados em URL.'
UNESCAPED_UNIX_SOCKET =

Detalhes de erro para um caminho de soquete unix sem código URL.

Desde:

  • 2.1.0

'Os soquetes de domínio UNIX devem ser codificados com URL.'
UNESCAPED_DATABASE =

Detalhes de erro para um nome de banco de dados de autenticação não codificado por URL.

Desde:

  • 2.1.0

'O banco de dados de autenticação deve ser codificado como URL.'
INVALID_OPTS_DELIM =

Detalhes de erro por fornecer opções sem um delimitador de banco de dados.

Desde:

  • 2.1.0

"O delimitador de banco de dados '#{DATABASE_DELIM}' deve estar presente se as opções forem especificadas."
INVALID_HOST =

Detalhes de erro para um host ausente.

Desde:

  • 2.1.0

'host ausente; pelo menos um deve ser fornecido.'
INVALID_PORT =

Detalhes de erro para uma porta inválida.

Desde:

  • 2.1.0

'Porta inválida. A porta deve ser um número inteiro maior que 0 e menor que 65536'
READ_MODE_MAP =

Mapa de modos de leitura de URI para modos de leitura de driver Ruby

Desde:

  • 2.0.0

{
  'primary' => :primary,
  'primarypreferred' => :primary_preferred,
  'secundário' => :secondary,
  'secondarypreferred' => :secondary_preferred,
  'mais próximo' => :mais próximo
}.congelar
AUTH_MECH_MAP =

Mapa de mecanismos de autenticação URI para mecanismos de driver Ruby

Desde:

  • 2.0.0

{
  'GSSAPI' => :gssapi,
  'MONGODB-AWS' => :aws,
  # O MONGODB-CR está obsoleto e será removido na versão do driver 3.0
  'MONGODB-CR' => :mongodb_cr,
  'MONGODB-X509' => :mongodb_x509,
  'PLAIN' => :plain,
  'SCRAM-SHA-1' => :scram,
  'SCRAM-SHA-256' => :scram256,
}.congelar
SERVER_MONITORING_MODES =

Valores válidos para a opção de URI serverMonitoringMode.

Desde:

  • 2.0.0

%w[fluxo enquete auto].congelar
REPEATABLE_OPTIONS =

Opções que podem aparecer mais de uma vez no uri.

Para seguir o requisito específico das opções de URI de que todas as instâncias de 'tls' e 'ssl' tenham o mesmo valor, precisamos acompanhar todos os valores passados para essas opções. Supondo que não entrem em conflito, serão condensadas em um único valor imediatamente após a análise do URI.

Desde:

  • 2.1.0

%i[tag_sets ssl]

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 de Address::Validator

#validate_address_str!

Métodos incluídos no Loggable

#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger

Detalhes do construtor

#inicializar(string, opções = {}) ➤ URI

Crie o novo uri a partir da string fornecida.

Exemplos:

Crie o novo URI.

URI.new('mongodb://localhost:27017')

Parâmetros:

  • string (string)

    O URI a ser analisado.

  • opções (Hash) (padrão para: {})

    As opções.

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

  • :logger (Registrador)

    Um registrador personalizado para usar.

Aumenta:

Desde:

  • 2.0.0



313
314
315
316
317
318
319
320
321
322
323
324
325
326
# Arquivo 'lib/mongo/uri.rb', linha 313

def inicializar(string, opções = {})
  aumentar Erro::URL inválida.Novo(string, ' OURI deve ser uma string, não nula.') a menos que string
  aumentar Erro::URL inválida.Novo(string, 'Não é possível analisar um URI vazio.') se string.vazio?

  @string = string
  @opções = opções
  parsed_scheme, _, restante = string.Partição(SCHEME_DELIM)
  a menos que parsed_scheme == Esquema
    create_invalid_error!("Esquema inválido '#{parsed_scheme}'. O esquema deve ser '#{MONGODB_SCHEME}'. Use URI#get para analisar URIs SRV.")
  end
  create_invalid_error!('Nenhum host no URI') se restante.vazio?
  análise!(restante)
  validate_uri_options!
end

Detalhes do atributo da instância

#opções Objeto (somente leitura)

As opções de objeto do analisador uri.

Desde:

  • 2.0.0



37
38
39
# Arquivo 'lib/mongo/uri.rb', linha 37

def opções
  @opções
end

#servidoresObjeto (somente leitura)

Os servidores especificados no uri.

Desde:

  • 2.0.0



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

def Servidores
  @servidores
end

#uri_options ➤ Objeto (somente leitura)

Mongo::Options::editado das opções especificadas no uri.

Desde:

  • 2.1.0



42
43
44
# Arquivo 'lib/mongo/uri.rb', linha 42

def uri_options
  @uri_options
end

Detalhes do método de classe

.get(string, opts = {}) ➤ URI, URI::SRVProtocol

Obtenha um objeto URI ou um objeto SRVProtocol URI .

Exemplos:

Obtenha o objeto uri.

URI.get(string)

Parâmetros:

  • string (string)

    O URI a ser analisado.

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Retorna:

Aumenta:

Desde:

  • 2.5.0



262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
# Arquivo 'lib/mongo/uri.rb', linha 262

def auto.obter(string, opciona = {})
  aumentar Erro::URL inválida.Novo(string, ' OURI deve ser uma string, não nula.') a menos que string
  aumentar Erro::URL inválida.Novo(string, 'Não é possível analisar um URI vazio.') se string.vazio?

  Esquema, = string.Partição(SCHEME_DELIM)
  caso Esquema
  quando MONGODB_SCHEME
    URI.Novo(string, opciona)
  quando MONGODB_SRV_SCHEME
    Protocolo SRV.Novo(string, opciona)
  mais
    aumentar Erro::URL inválida.Novo(string,
                                "Esquema inválido '#{schema}'. O esquema deve ser '#{MONGODB_SCHEME}' ou '#{MONGODB_SRV_SCHEME}'")
  end
end

.redact(string) ⇒ String

Substitua a parte userinfo de uma string de conexão do MongoDB por um espaço reservado para que o resultado possa ser registrado em log, exibido ou incorporado com segurança em uma mensagem de exceção.

A entrada é correspondida como uma string, não analisada, portanto, é seguro chamar em URIs malformadas (que é exatamente quando InvalidURI é levantado).

Parâmetros:

  • string (string)

    A string URI bruta.

Retorna:

  • (string)

    O URI com qualquer informação de usuário substituída por CREDENTIALS_PLACEHOLDER, ou a entrada inalterada se não for uma string ou não tiver informações de usuário.

Desde:

  • 2.0.0



243
244
245
246
247
# Arquivo 'lib/mongo/uri.rb', linha 243

def auto.redigir(string)
  Método string a menos que string.is_a?(String)

  string.sub(USERINFO_REDACTION_REGEX, "\\1#{CREDENTIALS_PLACEHOLDER}@")
end

Detalhes do método de instância

#client_options ➤ Mongo::Options::Redacted

Obtém o hash de opções que precisa ser passado para um Mongo::Client na instanciação, para que não precisemos mesclar as credenciais e o banco de dados nesse ponto - só temos um único ponto aqui.

Exemplos:

Obtenha as opções do cliente.

uri.client_options

Retorna:

Desde:

  • 2.0.0



288
289
290
291
292
293
294
# Arquivo 'lib/mongo/uri.rb', linha 288

def client_options
  opciona = uri_options.toque fazer |opciona|
    opciona[:database] = @database se @database
  end

  @user ? opciona.mesclar(credenciais) : opciona
end

#credenciaisHash

Obtenha as credenciais fornecidas no URI.

Exemplos:

Obtenha as credenciais.

uri.credentials

Retorna:

  • (Hash)

    As credenciais.

    • :user [ string ] O usuário.
    • :password [ string ] A senha fornecida.

Desde:

  • 2.0.0



338
339
340
# Arquivo 'lib/mongo/uri.rb', linha 338

def credenciais
  { utilizador: @user, Senha: @senha }
end

#banco de dados ➤ string

Obtenha o banco de dados fornecido no URI.

Exemplos:

Obtenha o banco de dados.

uri.database

Retorna:

  • (string)

    O banco de dados.

Desde:

  • 2.0.0



350
351
352
# Arquivo 'lib/mongo/uri.rb', linha 350

def database
  @database || Database::ADMIN
end

#inspecionarstring

Retorne uma representação legível por humanos e editada do URI. O Object#inspect padrão faria dump de @string e @password como variáveis de instância, vazando credenciais.

Retorna:

  • (string)

    A string de inspeção redigida.

Desde:

  • 2.0.0



373
374
375
# Arquivo 'lib/mongo/uri.rb', linha 373

def inspecionar
  "#<#{self.classe.name}: #{reconstruct_uri}>"
end

#srv_records ➤ Objeto

Desde:

  • 2.0.0



296
297
298
# Arquivo 'lib/mongo/uri.rb', linha 296

def srv_records
  nada
end

#to_s ➤ string

Obtenha o uri como uma string com todas as credenciais redigidas.

As credenciais são substituídas por CREDENTIALS_PLACEHOLDER para que o resultado seja seguro para log ou exibir. Use #credenciais para recuperar o usuário e a senha originais.

Exemplos:

Obtenha o uri como uma string.

uri.to_s

Retorna:

  • (string)

    A string uri redigida.

Desde:

  • 2.0.0



364
365
366
# Arquivo 'lib/mongo/uri.rb', linha 364

def to_s
  reconstruct_uri
end