diff options
author | lnu <lnu@f70e237a-67f3-0310-a06c-d2b8a7116972> | 2005-03-31 22:08:32 +0000 |
---|---|---|
committer | lnu <lnu@f70e237a-67f3-0310-a06c-d2b8a7116972> | 2005-03-31 22:08:32 +0000 |
commit | 16ec9aba7e94e628f22bcaeb3ecdd7916f3a3df5 (patch) | |
tree | fcee2e08574f55e141eeea3cb2747a4a80c04d89 /lib/feed2imap/config.rb | |
parent | 94c2f3339fbe18700fcc057367784d04bb2a76d9 (diff) | |
download | feed2imap-16ec9aba7e94e628f22bcaeb3ecdd7916f3a3df5.tar.gz feed2imap-16ec9aba7e94e628f22bcaeb3ecdd7916f3a3df5.tar.bz2 feed2imap-16ec9aba7e94e628f22bcaeb3ecdd7916f3a3df5.zip |
first import
git-svn-id: svn+ssh://svn.gna.org/svn/feed2imap/trunk/feed2imap@5 f70e237a-67f3-0310-a06c-d2b8a7116972
Diffstat (limited to '')
-rw-r--r-- | lib/feed2imap/config.rb | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/feed2imap/config.rb b/lib/feed2imap/config.rb new file mode 100644 index 0000000..8129fd2 --- /dev/null +++ b/lib/feed2imap/config.rb @@ -0,0 +1,76 @@ +=begin +Feed2Imap - RSS/Atom Aggregator uploading to an IMAP Server +Copyright (c) 2005 Lucas Nussbaum <lucas@lucas-nussbaum.net> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +=end + +require 'yaml' +require 'uri' +require 'feed2imap/imap' + +# Default cache file +DEFCACHE = ENV['HOME'] + '/.feed2imap.cache' + +# Feed2imap configuration +class F2IConfig + attr_reader :imap_accounts, :cache, :feeds + + # Load the configuration from the IO stream + # TODO should do some sanity check on the data read. + def initialize(io) + @conf = YAML::load(io) + @cache = @conf['cache'] || DEFCACHE + @conf['feeds'] ||= [] + @feeds = [] + @imap_accounts = ImapAccounts::new + @conf['feeds'].each { |f| + uri = URI::parse(f['target']) + path = uri.path + path = path[1..-1] if path[0,1] == '/' + @feeds.push(ConfigFeed::new(f['name'], f['url'], + @imap_accounts.add_account(uri), path)) + } + end + + def to_s + s = "Your Feed2Imap config :\n" + s += "=======================\n" + s += "Cache file: #{@cache}\n\n" + s += "Imap accounts I'll have to connect to :\n" + s += "---------------------------------------\n" + @imap_accounts.each_value { |i| s += i.to_s + "\n" } + s += "\nFeeds :\n" + s += "-------\n" + i = 1 + @feeds.each do |f| + s += "#{i}. #{f.name}\n" + s += " URL: #{f.url}\n" + s += " IMAP Account: #{f.imapaccount}\n" + s += " Folder: #{f.folder}\n\n" + i += 1 + end + s + end +end + +# A configured feed. simple data container. +class ConfigFeed + attr_reader :name, :url, :imapaccount, :folder + + def initialize(name, url, imapaccount, folder) + @name, @url, @imapaccount, @folder = name, url, imapaccount, folder + end +end |