模块 Net::IMAP::DeprecatedClientOptions
此模块处理各种 Net::IMAP
方法的已弃用参数。
公共类方法
Net::IMAP.new(host, **options) # 标准关键字选项 点击以切换源代码
Net::IMAP.new(host, options) # 过时的哈希选项
Net::IMAP.new(host, port) # 过时的端口参数
Net::IMAP.new(host, port, usessl, certs = nil, verify = true) # 已弃用的 SSL 参数
转换 Net::IMAP.new
参数以实现向后兼容性。
过时的参数¶ ↑
使用过时的参数不会打印警告。过时的参数将在未来的版本中弃用。
如果给出了第二个位置参数并且它是一个哈希(或可以通过 #to_hash
转换),则将其转换为关键字参数。
# Obsolete: Net::IMAP.new("imap.example.com", options_hash) # Use instead: Net::IMAP.new("imap.example.com", **options_hash)
如果给出了第二个位置参数并且它不是哈希,则将其转换为 port
关键字参数。
# Obsolete: Net::IMAP.new("imap.example.com", 114433) # Use instead: Net::IMAP.new("imap.example.com", port: 114433)
已弃用的参数¶ ↑
使用已弃用的参数会打印警告。转换为关键字参数以避免警告。已弃用的参数将在未来的版本中删除。
如果 usessl
为 false,则忽略 certs
和 verify
。当它为 true 时,所有三个参数都将转换为 ssl
关键字参数。如果没有 certs
或 verify
,则将其转换为 ssl: true
。
# DEPRECATED: Net::IMAP.new("imap.example.com", nil, true) # => prints a warning # Use instead: Net::IMAP.new("imap.example.com", ssl: true)
当 certs
是目录路径时,它会转换为 ca_path: certs
。
# DEPRECATED: Net::IMAP.new("imap.example.com", nil, true, "/path/to/certs") # => prints a warning # Use instead: Net::IMAP.new("imap.example.com", ssl: {ca_path: "/path/to/certs"})
当 certs
是文件路径时,它会转换为 ca_file: certs
。
# DEPRECATED: Net::IMAP.new("imap.example.com", nil, true, "/path/to/cert.pem") # => prints a warning # Use instead: Net::IMAP.new("imap.example.com", ssl: {ca_file: "/path/to/cert.pem"})
当 verify
为 false
时,它会转换为 verify_mode: OpenSSL::SSL::VERIFY_NONE
。
# DEPRECATED: Net::IMAP.new("imap.example.com", nil, true, nil, false) # => prints a warning # Use instead: Net::IMAP.new("imap.example.com", ssl: {verify_mode: OpenSSL::SSL::VERIFY_NONE})
调用超类方法
# File net-imap-0.5.4/lib/net/imap/deprecated_client_options.rb, line 72 def initialize(host, port_or_options = nil, *deprecated, **options) if port_or_options.nil? && deprecated.empty? super host, **options elsif options.any? # Net::IMAP.new(host, *__invalid__, **options) raise ArgumentError, "Do not combine deprecated and keyword arguments" elsif port_or_options.respond_to?(:to_hash) and deprecated.any? # Net::IMAP.new(host, options, *__invalid__) raise ArgumentError, "Do not use deprecated SSL params with options hash" elsif port_or_options.respond_to?(:to_hash) super host, **Hash.try_convert(port_or_options) elsif deprecated.empty? super host, port: port_or_options elsif deprecated.shift warn("DEPRECATED: Call Net::IMAP.new with keyword options", uplevel: 1, category: :deprecated) super host, port: port_or_options, ssl: create_ssl_params(*deprecated) else warn("DEPRECATED: Call Net::IMAP.new with keyword options", uplevel: 1, category: :deprecated) super host, port: port_or_options, ssl: false end end
公共实例方法
starttls(**options) # 标准 点击以切换源代码
starttls(options = {}) # 过时
starttls(certs = nil, verify = true) # 已弃用
转换 Net::IMAP#starttls
参数以实现向后兼容性。
对 certs
和 verify
的支持将在未来的版本中删除。
有关 certs
和 verify
的解释,请参见 ::new
。
调用超类方法
# File net-imap-0.5.4/lib/net/imap/deprecated_client_options.rb, line 106 def starttls(*deprecated, **options) if deprecated.empty? super(**options) elsif options.any? # starttls(*__invalid__, **options) raise ArgumentError, "Do not combine deprecated and keyword options" elsif deprecated.first.respond_to?(:to_hash) && deprecated.length > 1 # starttls(*__invalid__, **options) raise ArgumentError, "Do not use deprecated verify param with options hash" elsif deprecated.first.respond_to?(:to_hash) super(**Hash.try_convert(deprecated.first)) else warn("DEPRECATED: Call Net::IMAP#starttls with keyword options", uplevel: 1, category: :deprecated) super(**create_ssl_params(*deprecated)) end end
私有实例方法
create_ssl_params(certs = nil, verify = true) 点击以切换源代码
# File net-imap-0.5.4/lib/net/imap/deprecated_client_options.rb, line 126 def create_ssl_params(certs = nil, verify = true) params = {} if certs if File.file?(certs) params[:ca_file] = certs elsif File.directory?(certs) params[:ca_path] = certs end end params[:verify_mode] = verify ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE params end