Module: Net::IMAP::DeprecatedClientOptions
- Included in:
- Net::IMAP
- Defined in:
- lib/net/imap/deprecated_client_options.rb
Overview
This module handles deprecated arguments to various Net::IMAP methods.
Instance Method Summary collapse
-
#initialize(host, port_or_options = nil, *deprecated, **options) ⇒ Object
:call-seq: Net::IMAP.new(host, **options) # standard keyword options Net::IMAP.new(host, options) # obsolete hash options Net::IMAP.new(host, port) # obsolete port argument Net::IMAP.new(host, port, usessl, certs = nil, verify = true) # deprecated SSL arguments.
-
#starttls(*deprecated, **options) ⇒ Object
:call-seq: starttls(**options) # standard starttls(options = {}) # obsolete starttls(certs = nil, verify = true) # deprecated.
Instance Method Details
#initialize(host, port_or_options = nil, *deprecated, **options) ⇒ Object
:call-seq:
Net::IMAP.new(host, **) # standard keyword options
Net::IMAP.new(host, ) # obsolete hash options
Net::IMAP.new(host, port) # obsolete port argument
Net::IMAP.new(host, port, usessl, certs = nil, verify = true) # deprecated SSL arguments
Translates Net::IMAP.new arguments for backward compatibility.
Obsolete arguments
Use of obsolete arguments does not print a warning. Obsolete arguments will be deprecated by a future release.
If a second positional argument is given and it is a hash (or is convertible via #to_hash
), it is converted to keyword arguments.
# Obsolete:
Net::IMAP.new("imap.example.com", )
# Use instead:
Net::IMAP.new("imap.example.com", **)
If a second positional argument is given and it is not a hash, it is converted to the port
keyword argument.
# Obsolete:
Net::IMAP.new("imap.example.com", 114433)
# Use instead:
Net::IMAP.new("imap.example.com", port: 114433)
Deprecated arguments
Using deprecated arguments prints a warning. Convert to keyword arguments to avoid the warning. Deprecated arguments will be removed in a future release.
If usessl
is false, certs
, and verify
are ignored. When it true, all three arguments are converted to the ssl
keyword argument. Without certs
or verify
, it is converted to ssl: true
.
# DEPRECATED:
Net::IMAP.new("imap.example.com", nil, true) # => prints a warning
# Use instead:
Net::IMAP.new("imap.example.com", ssl: true)
When certs
is a path to a directory, it is converted to 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"})
When certs
is a path to a file, it is converted to 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"})
When verify
is false
, it is converted to 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})
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/net/imap/deprecated_client_options.rb', line 72 def initialize(host, = nil, *deprecated, **) if .nil? && deprecated.empty? super host, ** elsif .any? # Net::IMAP.new(host, *__invalid__, **options) raise ArgumentError, "Do not combine deprecated and keyword arguments" elsif .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 .respond_to?(:to_hash) super host, **Hash.try_convert() elsif deprecated.empty? super host, port: elsif deprecated.shift warn("DEPRECATED: Call Net::IMAP.new with keyword options", uplevel: 1, category: :deprecated) super host, port: , ssl: create_ssl_params(*deprecated) else warn("DEPRECATED: Call Net::IMAP.new with keyword options", uplevel: 1, category: :deprecated) super host, port: , ssl: false end end |
#starttls(*deprecated, **options) ⇒ Object
:call-seq:
starttls(**) # standard
starttls( = {}) # obsolete
starttls(certs = nil, verify = true) # deprecated
Translates Net::IMAP#starttls arguments for backward compatibility.
Support for certs
and verify
will be dropped in a future release.
See ::new for interpretation of certs
and verify
.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/net/imap/deprecated_client_options.rb', line 106 def starttls(*deprecated, **) if deprecated.empty? super(**) elsif .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 |