类:Mongo::URI
- 继承:
-
对象
- 对象
- Mongo::URI
- 包括:
- Address::Validator , Loggable
- 定义于:
- lib/ Mongo/uri.rb 、
lib/ Mongo/uri/srv_protocol.rb、
lib/ Mongo/uri/options_mapper.rb
Overview
URI 类为用户提供了一种解析连接MongoDB string格式规范中定义的 uri 的方法。
https://www.mongodb.com/zh-cn/docs/manual/reference/connection-string/
在命名空间下定义
类: OptionsMapper , SRVProtocol
常量摘要折叠
- SCHEME =
已弃用。
将在3.0中删除。
MongoDB连接string模式。
'mongodb://'- MONGODB_SCHEME =
MongoDB连接string方案根。
'mongodb'- MONGODB_SRV_SCHEME =
MongoDB srv 协议连接string方案根。
'mongodb+srv'- INVALID_SCHEME =
已弃用。
无效方案的错误详细信息。
"无效的方案。方案必须是 ' #{ MONGODB_SCHEME } ' 或 ' #{ MONGODB_SRV_SCHEME } ' "- FORMAT =
MongoDB URI 格式规范。
' MongoDB ://[username:password@]host1[:port1][,host2[:port2] ' + ',...[,hostN[:portN]]][/[数据库][?options]]'
- 帮助 =
MongoDB URI(连接string )文档URL
'https://www.mongodb.com/zh-cn/docs/manual/reference/connection-string/'- 不安全 =
必须进行 urlencoded 的不安全字符。
%r{[:/@]}- PERCENT_CHAR =
必须在用户信用中编码的百分号。
/%/- UNIX_SOCKET =
Unix 套接字后缀。
/.sock/- HOST_DELIM =
分隔主机的字符。
','- HOST_PORT_DELIM =
分隔主机和端口的字符。
':'- DATABASE_DELIM =
分隔数据库的字符。
'/'- URI_OPTS_DELIM =
字符分隔选项。
'?'- INDIV_URI_OPTS_DELIM =
已弃用。
分隔多个选项的字符。
'和'- URI_OPTS_VALUE_DELIM =
分隔选项及其值的字符。
'='- AUTH_USER_PWD_DELIM =
分隔用户名和密码的字符。
':'- AUTH_DELIM =
分隔身份验证档案的字符。
'@'- SCHEME_DELIM =
模式分隔符。
'://'- CREDENTIALS_PLACEHOLDER =
在渲染 URI 以进行显示、记录或错误报告时,用于替代明文凭证的占位符。
'<credentials>'- USERINFO_REDACTION_REGEX =
与 MongoDB 连接字符串的 userinfo 部分匹配的模式。在开头锚定并绑定到权限组件(在第一个“/”、“?”或“#”处停止),但在该组件中贪婪匹配直到最后一个“@”,因此包含未脱逃“@”的密码仍可以完全编辑。不区分大小写,因此像 'MongoDB://' 这样的非常规模式也会被编辑——解析器会拒绝它,编辑器不得是导致结果错误中凭证泄露的事物。
%r{\A(mongodb(?:\+srv)?://)[^/?#]*@}i.冻结
- INVALID_OPTS_VALUE_DELIM =
无效选项格式的错误详细信息。
' 选项及其值必须分隔 ' + " by ' #{ URI_OPTS_VALUE_DELIM } ' "
- UNESCAPED_USER_PWD =
非 urlencoded 用户名或密码的错误详细信息。
'用户名和密码必须进行 urlencoded。'- UNESCAPED_UNIX_SOCKET =
非 urlencoded unix 套接字路径的错误详细信息。
'UNIX 域套接字必须进行 urlencoded。'- UNESCAPED_DATABASE =
非 urlencoded 身份验证数据库名称的错误详细信息。
'身份验证数据库必须进行 urlencoded。'- INVALID_OPTS_DELIM =
提供不带数据库分隔符的选项的错误详细信息。
" 如果指定了选项,则必须存在 数据库分隔符 ' #{ DATABASE_DELIM } '。 "- INVALID_HOST =
缺少主机的错误详细信息。
'缺少托管;必须至少提供一个。'- INVALID_PORT =
无效端口的错误详细信息。
'端口无效。端口必须是大于 0 且小于 65536 的整数'- READ_MODE_MAP =
URI 读取偏好模式到 Ruby 驱动程序读取偏好模式的映射
{ ' primary ' => :primary, ' primarypreferred ' => :primary_preferred, ' secondary ' => :secondary, ' secondarypreferred ' => :secondary_preferred, ' nearest ' => :nearest }.冻结
- AUTH_MECH_MAP =
URI 身份验证机制到 Ruby 驱动程序机制的映射
{ ' GSSAPI ' => :gssapi, ' MONGODB-AWS ' => :aws, # MONGODB-CR 已弃用,并将在驱动程序版本3.0中删除 'MONGODB-CR' => :mongodb_cr, ' MONGODB-X 509 ' => :mongodb_x 509, ' PLAIN ' => :plain, ' SCRAM-SHA- 1 ' => :scram, ' SCRAM-SHA- 256 ' => :scram 256, }.冻结
- SERVER_MONITORING_MODES =
serverMonitoringMode URI 选项的有效值。
%w[流 轮询 auto].冻结
- REPEATABLE_OPTIONS =
允许在 uri 中多次出现的选项。
为了遵循 URI 选项规范要求“tls”和“ssl”的所有实例都具有相同的值,我们需要追踪为这些选项传入的所有值。假设它们不冲突,它们将在解析 URI 后立即压缩为单个值。
%i[tag_sets ssl]
Loggable中包含的常量
实例属性摘要折叠
-
# options ⇒ 对象
只读
uri 解析器对象选项。
-
#servers ⇒ 对象
只读
uri 中指定的服务器。
-
# uri_options ⇒ 对象
只读
Mongo::Options::Redacted 列出了 uri 中指定的选项。
类方法摘要折叠
-
。 get (string, opts = {}) ⇒ URI, URI::SRVProtocol
获取 URI 对象或 SRVProtocol URI 对象。
-
.redact(string) ⇒ String
将 MongoDB 连接字符串的 userinfo 部分替换为占位符,以便安全地记入日志、显示或嵌入到异常消息中。
实例方法摘要折叠
-
# client_options ⇒ Mongo::Options::Redacted
获取在实例化时需要传递给 Mongo::客户端 的选项哈希,因此我们不必在点合并凭证和数据库- 这里只有一个点。
-
#凭证⇒ 哈希
获取 URI 中提供的档案。
-
#数据库⇒ string
获取 URI 中提供的数据库。
-
#initialize (string, options = {}) ⇒ URI
构造函数
从提供的string创建新的 uri。
-
#检查⇒ string
返回编辑过的、人类可读的 URI 表示。
- # srv_records ⇒ 对象
-
# to_s ⇒ string
获取不含任何凭证的uri字符串。
Address::Validator中包含的方法
Loggable中包含的方法
#log_debug 、 #log_error 、 #log_ Fatal 、 #log_info 、 #log_warn 、 #logger
构造函数详情
#initialize (string, options = {}) ⇒ URI
从提供的string创建新的 uri。
313 314 315 316 317 318 319 320 321 322 323 324 325 326 |
# File 'lib/ Mongo/uri.rb', 第 313 行 def 初始化(字符串, = {}) 提高 错误::InvalidURI.new(字符串, ' URI 必须是string ,而不是 nil。 ') 除非 字符串 提高 错误::InvalidURI.new(字符串, '无法解析空 URI。 ') if 字符串.空? @string = 字符串 @options = parsed_scheme, _, 剩余 = 字符串.分区(SCHEME_DELIM) 除非 parsed_scheme == 有关 Raise_invalid_error!("无效的模式 ' #{ parsed_scheme } '。模式必须是 ' #{ MONGODB_SCHEME } '。使用 URI#get 解析 SRV URI。 ") end Raise_invalid_error!(' URI 中没有主机') if 剩余.空? parse!(剩余) end |
实例属性详细信息
# options ⇒对象(只读)
uri 解析器对象选项。
37 38 39 |
# File 'lib/ Mongo/uri.rb', 第 37 行 def @options end |
#servers ⇒对象(只读)
uri 中指定的服务器。
47 48 49 |
# File 'lib/ Mongo/uri.rb', 第 47 行 def 服务器 @servers end |
# uri_options ⇒对象(只读)
Mongo::Options::Redacted 列出了 uri 中指定的选项。
42 43 44 |
# File 'lib/ Mongo/uri.rb', 第 42 行 def @uri_options end |
类方法详细信息
。 get (string, opts = {}) ⇒ URI , URI::SRVProtocol
获取 URI 对象或 SRVProtocol URI 对象。
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 |
# File 'lib/ Mongo/uri.rb', 第 262 行 def self.获取(字符串, opts = {}) 提高 错误::InvalidURI.new(字符串, ' URI 必须是string ,而不是 nil。 ') 除非 字符串 提高 错误::InvalidURI.new(字符串, '无法解析空 URI。 ') if 字符串.空? 有关, = 字符串.分区(SCHEME_DELIM) 案例 有关 when MONGODB_SCHEME URI.new(字符串, opts) when MONGODB_SRV_SCHEME SRVProtocol.new(字符串, opts) else 提高 错误::InvalidURI.new(字符串, " 无效方案 ' # { { schema } } '。方案必须是 ' #{ MONGODB_SCHEME } ' 或 ' #{ MONGODB_SRV_SCHEME } ' ") end end |
.redact(string) ⇒ String
将 MongoDB 连接字符串的 userinfo 部分替换为占位符,以便安全地记入日志、显示或嵌入到异常消息中。
输入作为 string 匹配,而不是解析,因此可以安全地在格式错误的 URI 上调用此函数(这正是抛出 InvalidURI 的时候)。
243 244 245 246 247 |
# File 'lib/ Mongo/uri.rb', 第 243 行 def self.编辑(字符串) return 字符串 除非 字符串.is_a?(字符串) 字符串.子(USERINFO_REDACTION_REGEX, "\\1#{CREDENTIALS_PLACEHOLDER}@") end |
实例方法详细信息
# client_options ⇒ Mongo::Options::Redacted
获取在实例化时需要传递给 Mongo::客户端 的选项哈希,因此我们不必在点合并凭证和数据库- 这里只有一个点。
288 289 290 291 292 293 294 |
# File 'lib/ Mongo/uri.rb', 第 288 行 def opts = .点击 do |opts| opts[:database] = @database if @database end @user ? opts.合并(merge)(凭证) : opts end |
#凭证⇒哈希
获取 URI 中提供的档案。
338 339 340 |
# File 'lib/ Mongo/uri.rb', 第 338 行 def 凭证 { 用户: @user, 密码: @password } end |
#数据库⇒ string
获取 URI 中提供的数据库。
350 351 352 |
# File 'lib/ Mongo/uri.rb', 第 350 行 def database @database || Database::ADMIN end |
#检查⇒ string
返回编辑过的、人类可读的 URI 表示形式。默认的 Object#inspect 会将 @string 和 @password 作为实例变量转储,从而泄露凭证。
373 374 375 |
# File 'lib/ Mongo/uri.rb', 第 373 行 def 检查 "#<#{self.类.name}: #{reconstruct_uri}>" end |
# srv_records ⇒对象
296 297 298 |
# File 'lib/ Mongo/uri.rb', 第 296 行 def srv_records nil end |
# to_s ⇒ string
获取不含任何凭证的uri字符串。
凭证已被 CREDENTIALS_PLACEHOLDER 替换,因此结果可以安全地日志或显示。使用 凭证 恢复原始用户名和密码。
364 365 366 |
# File 'lib/ Mongo/uri.rb', 第 364 行 def to_s reconstruct_uri end |