From 9be3aa1767681caf5a441336eaf6408979a26649 Mon Sep 17 00:00:00 2001 From: shugo Date: Mon, 7 May 2012 04:05:44 +0000 Subject: * lib/net/imap.rb (body_type_attachment): parse body type "ATTACHMENT". [ruby-core:44849] [Bug #6397] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35558 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ lib/net/imap.rb | 29 +++++++++++++++++++++++++++++ test/net/imap/test_imap_response_parser.rb | 10 ++++++++++ 3 files changed, 44 insertions(+) diff --git a/ChangeLog b/ChangeLog index 65b59b0d94..8477550c12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon May 7 13:03:55 2012 Shugo Maeda + + * lib/net/imap.rb (body_type_attachment): parse body type + "ATTACHMENT". [ruby-core:44849] [Bug #6397] + Mon May 7 10:49:36 2012 NARUSE, Yui * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): define IDs before diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 1f9682681e..567cf66809 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -1977,6 +1977,26 @@ module Net end end + # Net::IMAP::BodyTypeAttachment represents attachment body structures + # of messages. + # + # ==== Fields: + # + # media_type:: Returns the content media type name. + # + # subtype:: Returns +nil+. + # + # param:: Returns a hash that represents parameters. + # + # multipart?:: Returns false. + # + class BodyTypeAttachment < Struct.new(:media_type, :subtype, + :param) + def multipart? + return false + end + end + # Net::IMAP::BodyTypeMultipart represents multipart body structures # of messages. # @@ -2347,6 +2367,8 @@ module Net return body_type_text when /\A(?:MESSAGE)\z/ni return body_type_msg + when /\A(?:ATTACHMENT)\z/ni + return body_type_attachment else return body_type_basic end @@ -2399,6 +2421,13 @@ module Net md5, disposition, language, extension) end + def body_type_attachment + mtype = case_insensitive_string + match(T_SPACE) + param = body_fld_param + return BodyTypeAttachment.new(mtype, nil, param) + end + def body_type_mpart parts = [] while true diff --git a/test/net/imap/test_imap_response_parser.rb b/test/net/imap/test_imap_response_parser.rb index b4d36c9091..0231ed436b 100644 --- a/test/net/imap/test_imap_response_parser.rb +++ b/test/net/imap/test_imap_response_parser.rb @@ -142,4 +142,14 @@ foo EOF assert_equal("foo\r\n", response.data.attr["RFC822"]) end + + # [Bug #6397] [ruby-core:44849] + def test_body_type_attachment + parser = Net::IMAP::ResponseParser.new + response = parser.parse(<