diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-01-10 05:24:04 -0800 |
---|---|---|
committer | Lucas Nussbaum <lucas@lucas-nussbaum.net> | 2011-02-18 17:13:25 +0100 |
commit | 7579f7326ae3b8c8f441ef8b42be915cb400dc6d (patch) | |
tree | c13834a437f1be2435bb4e50cd2fc9b061ad8804 | |
parent | e36e42b740d9fd8b31e0d6129812501f4b787a34 (diff) | |
download | feed2imap-7579f7326ae3b8c8f441ef8b42be915cb400dc6d.tar.gz feed2imap-7579f7326ae3b8c8f441ef8b42be915cb400dc6d.tar.bz2 feed2imap-7579f7326ae3b8c8f441ef8b42be915cb400dc6d.zip |
add "parts" config option
This allows disabling either HTML or text parts to save bandwidth/disk
space on the IMAP server.
Diffstat (limited to '')
-rw-r--r-- | lib/feed2imap/config.rb | 8 | ||||
-rw-r--r-- | lib/feed2imap/itemtomail.rb | 24 | ||||
-rwxr-xr-x | test/tc_config.rb | 18 |
3 files changed, 40 insertions, 10 deletions
diff --git a/lib/feed2imap/config.rb b/lib/feed2imap/config.rb index 231eb1d..74d5507 100644 --- a/lib/feed2imap/config.rb +++ b/lib/feed2imap/config.rb @@ -23,6 +23,7 @@ require 'feed2imap/imap' require 'feed2imap/maildir' require 'etc' require 'socket' +require 'set' # Default cache file DEFCACHE = ENV['HOME'] + '/.feed2imap.cache' @@ -33,7 +34,7 @@ LOGNAME = Etc.getlogin # Feed2imap configuration class F2IConfig - attr_reader :imap_accounts, :cache, :feeds, :dumpdir, :updateddebug, :max_failures, :include_images, :default_email, :hostname, :reupload_if_updated + attr_reader :imap_accounts, :cache, :feeds, :dumpdir, :updateddebug, :max_failures, :include_images, :default_email, :hostname, :reupload_if_updated, :parts # Load the configuration from the IO stream # TODO should do some sanity check on the data read. @@ -48,8 +49,13 @@ class F2IConfig @updateddebug = false @updateddebug = @conf['debug-updated'] if @conf.has_key?('debug-updated') + @parts = %w(text html) + @parts = Array(@conf['parts']) if @conf.has_key?('parts') && !@conf['parts'].empty? + @parts = Set.new(@parts) + @include_images = true @include_images = @conf['include-images'] if @conf.has_key?('include-images') + @parts << 'html' if @include_images && ! @parts.include?('html') @reupload_if_updated = true @reupload_if_updated = @conf['reupload-if-updated'] if @conf.has_key?('reupload-if-updated') diff --git a/lib/feed2imap/itemtomail.rb b/lib/feed2imap/itemtomail.rb index 6c70cbd..fcf8f8b 100644 --- a/lib/feed2imap/itemtomail.rb +++ b/lib/feed2imap/itemtomail.rb @@ -77,14 +77,20 @@ def item_to_mail(config, item, id, updated, from = 'Feed2Imap', inline_images = message.header['Subject'] = subj end end - textpart = RMail::Message::new - textpart.header['Content-Type'] = 'text/plain; charset=utf-8; format=flowed' - textpart.header['Content-Transfer-Encoding'] = '8bit' - textpart.body = item.to_text(true, wrapto, false) - htmlpart = RMail::Message::new - htmlpart.header['Content-Type'] = 'text/html; charset=utf-8' - htmlpart.header['Content-Transfer-Encoding'] = '8bit' - htmlpart.body = item.to_html + textpart = htmlpart = nil + parts = config.parts + if parts.include?('text') + textpart = parts.size == 1 ? message : RMail::Message::new + textpart.header['Content-Type'] = 'text/plain; charset=utf-8; format=flowed' + textpart.header['Content-Transfer-Encoding'] = '8bit' + textpart.body = item.to_text(true, wrapto, false) + end + if parts.include?('html') + htmlpart = parts.size == 1 ? message : RMail::Message::new + htmlpart.header['Content-Type'] = 'text/html; charset=utf-8' + htmlpart.header['Content-Transfer-Encoding'] = '8bit' + htmlpart.body = item.to_html + end # inline images as attachments imgs = [] @@ -127,7 +133,7 @@ def item_to_mail(config, item, id, updated, from = 'Feed2Imap', inline_images = imgs.each do |i| message.add_part(i) end - else + elsif parts.size != 1 message.header['Content-Type'] = 'multipart/alternative' message.add_part(textpart) message.add_part(htmlpart) diff --git a/test/tc_config.rb b/test/tc_config.rb index ce910e9..ad4877c 100755 --- a/test/tc_config.rb +++ b/test/tc_config.rb @@ -34,6 +34,17 @@ feeds: url: http://something2 target: imaps://login:pasword@ezaezae/Feeds/B EOF +CONFPARTS = <<EOF +parts: text +include-images: false +feeds: + - name: feed1 + url: http://something + target: imap://login:pasword@ezaezae/Feeds/A + - name: feed2 + url: http://something2 + target: imap://login:pasword@ezaezae/Feeds/B +EOF class ConfigTest < Test::Unit::TestCase def test_cache @@ -61,4 +72,11 @@ class ConfigTest < Test::Unit::TestCase assert_equal('http://something', conf.feeds[0].url) assert_equal('http://something2', conf.feeds[1].url) end + + def test_parts + sio = StringIO::new CONFPARTS + conf = F2IConfig::new(sio) + assert conf.parts.include?('text') + assert ! conf.parts.include?('html') + end end |