From cb41df9c5727d779d058e20d2171085b4cb956e2 Mon Sep 17 00:00:00 2001 From: nick evans Date: Fri, 13 Sep 2024 09:24:35 -0400 Subject: [PATCH 1/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Replace=20MessageSet?= =?UTF-8?q?=20with=20SequenceSet=20(internally)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/net/imap.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 9cdd6621..d7062081 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -1950,7 +1950,7 @@ def expunge # [RFC4315[https://www.rfc-editor.org/rfc/rfc4315.html]]. def uid_expunge(uid_set) synchronize do - send_command("UID EXPUNGE", MessageSet.new(uid_set)) + send_command("UID EXPUNGE", SequenceSet.new(uid_set)) clear_responses("EXPUNGE") end end @@ -2912,9 +2912,9 @@ def fetch_internal(cmd, set, attr, mod = nil, changedsince: nil) synchronize do clear_responses("FETCH") if mod - send_command(cmd, MessageSet.new(set), attr, mod) + send_command(cmd, SequenceSet.new(set), attr, mod) else - send_command(cmd, MessageSet.new(set), attr) + send_command(cmd, SequenceSet.new(set), attr) end clear_responses("FETCH") end @@ -2922,7 +2922,7 @@ def fetch_internal(cmd, set, attr, mod = nil, changedsince: nil) def store_internal(cmd, set, attr, flags, unchangedsince: nil) attr = RawData.new(attr) if attr.instance_of?(String) - args = [MessageSet.new(set)] + args = [SequenceSet.new(set)] args << ["UNCHANGEDSINCE", Integer(unchangedsince)] if unchangedsince args << attr << flags synchronize do @@ -2933,7 +2933,7 @@ def store_internal(cmd, set, attr, flags, unchangedsince: nil) end def copy_internal(cmd, set, mailbox) - send_command(cmd, MessageSet.new(set), mailbox) + send_command(cmd, SequenceSet.new(set), mailbox) end def sort_internal(cmd, sort_keys, search_keys, charset) @@ -2964,7 +2964,7 @@ def normalize_searching_criteria(keys) keys.collect! do |i| case i when -1, Range, Array - MessageSet.new(i) + SequenceSet.new(i) else i end From 05766fbdab5b7488b3833d0d9e19ea88b6762141 Mon Sep 17 00:00:00 2001 From: nick evans Date: Fri, 13 Sep 2024 09:23:15 -0400 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=97=91=EF=B8=8F=20Deprecate=20Net::IM?= =?UTF-8?q?AP::MessageSet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/net/imap/command_data.rb | 10 ++++++++++ test/net/imap/test_imap.rb | 23 +++++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/net/imap/command_data.rb b/lib/net/imap/command_data.rb index 180a254a..20018b5d 100644 --- a/lib/net/imap/command_data.rb +++ b/lib/net/imap/command_data.rb @@ -179,6 +179,7 @@ def initialize(data) end end + # *DEPRECATED*. Replaced by SequenceSet. class MessageSet # :nodoc: def send_data(imap, tag) imap.__send__(:put_string, format_internal(@data)) @@ -192,6 +193,15 @@ def validate def initialize(data) @data = data + warn "DEPRECATED: #{MessageSet} should be replaced with #{SequenceSet}." + begin + # to ensure the input works with SequenceSet, too + SequenceSet.new(data) + rescue + warn "MessageSet input is incompatible with SequenceSet: [%s] %s" % [ + $!.class, $!.message + ] + end end def format_internal(data) diff --git a/test/net/imap/test_imap.rb b/test/net/imap/test_imap.rb index b85a9aae..0ad7ca51 100644 --- a/test/net/imap/test_imap.rb +++ b/test/net/imap/test_imap.rb @@ -626,17 +626,20 @@ def test_send_invalid_number imap.__send__(:send_command, "TEST", 2**32) end # MessageSet numbers may be non-zero uint32 - assert_raise(Net::IMAP::DataFormatError) do - imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(-1)) - end - assert_raise(Net::IMAP::DataFormatError) do - imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(0)) - end - imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(1)) - imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32 - 1)) - assert_raise(Net::IMAP::DataFormatError) do - imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32)) + stderr = EnvUtil.verbose_warning do + assert_raise(Net::IMAP::DataFormatError) do + imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(-1)) + end + assert_raise(Net::IMAP::DataFormatError) do + imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(0)) + end + imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(1)) + imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32 - 1)) + assert_raise(Net::IMAP::DataFormatError) do + imap.__send__(:send_command, "TEST", Net::IMAP::MessageSet.new(2**32)) + end end + assert_match(/DEPRECATED:.+MessageSet.+replace.+with.+SequenceSet/, stderr) # SequenceSet numbers may be non-zero uint3, and -1 is translated to * imap.__send__(:send_command, "TEST", Net::IMAP::SequenceSet.new(-1)) assert_raise(Net::IMAP::DataFormatError) do