- Timestamp:
- 09/08/08 23:58:29 (18 months ago)
- Location:
- easyweb/trunk
- Files:
-
- 1 removed
- 5 modified
- 1 moved
-
TODO (deleted)
-
lib/easyweb.rb (modified) (1 diff)
-
lib/easyweb/account.rb (modified) (2 diffs)
-
lib/easyweb/delegate.rb (modified) (2 diffs)
-
lib/easyweb/delegate/debug-dir.rb (modified) (1 diff)
-
script/all-activity.rb (moved) (moved from easyweb/trunk/script/wesabe-add.rb) (1 diff)
-
script/wesabe-update.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
easyweb/trunk/lib/easyweb.rb
r1063 r1064 9 9 10 10 # Create a new EasyWeb object, using the given delegate for callbacks 11 def initialize(*delegate )11 def initialize(*delegate, &block) 12 12 if delegate.size == 1 && Delegate === delegate.first 13 13 @delegate = delegate.first 14 14 else 15 @delegate = Delegate.new(*delegate )15 @delegate = Delegate.new(*delegate, &block) 16 16 end 17 17 -
easyweb/trunk/lib/easyweb/account.rb
r1063 r1064 59 59 tried = 0 60 60 got = [] 61 while max &&tried < max61 while max.nil? || tried < max 62 62 tried += 1 63 63 begin … … 66 66 rescue DownloadError => e 67 67 err_count += 1 68 raise e if err_count > max_consec_errs && found.empty?68 raise e if err_count > max_consec_errs && got.empty? 69 69 log.warn("%s: %s" % [name, e.message]) if log 70 70 break if err_count > max_consec_errs # we're done -
easyweb/trunk/lib/easyweb/delegate.rb
r1063 r1064 5 5 # :DelegateName => ["some", "args"]) 6 6 class EasyWeb::Delegate 7 def initialize(*mixins )7 def initialize(*mixins, &block) 8 8 @delegates = [] 9 9 … … 26 26 @delegates.concat(mixins) 27 27 @delegates << Interface.new 28 (class << self; self; end).instance_eval(&block) if block 28 29 end 29 30 30 def method_missing(meth, *args)31 def delegate_method(meth, *args) 31 32 @delegates.each do |d| 32 33 return d.__send__(meth, *args) if d.respond_to?(meth) 33 34 end 34 35 end 36 alias :method_missing :delegate_method 35 37 end 36 38 -
easyweb/trunk/lib/easyweb/delegate/debug-dir.rb
r1063 r1064 16 16 @log_level = level 17 17 @debug_dir = dir 18 Dir.mkdir(@debug_dir) unless File.directory?(@debug_dir) 18 19 end 19 20 end -
easyweb/trunk/script/all-activity.rb
r1054 r1064 1 1 #!/usr/bin/ruby 2 require 'rubygems' 2 3 require 'easyweb' 3 require 'keychain'4 require 'wesabe'5 4 5 card, dir, acc_name, acc_type = ARGV 6 6 7 EasyWebAuth = EasyWeb::KeychainAuthenticator.new('EasyWeb') 8 AccountTypes = { 'VALUE ACCOUNT' => EasyWeb::Savings, 9 'TD GREEN VISA' => EasyWeb::CreditCard } 7 easyweb = EasyWeb.new( 8 :CAFile => '/usr/share/curl/curl-ca-bundle.crt', 9 :DebugInteractive => nil, 10 :AuthConsole => nil) do 11 define_method(:access_card) { card } 12 define_method(:account_type) { acc_type } 13 end 10 14 11 easyweb = EasyWeb.new 12 easyweb.login(EasyWebAuth) 13 easyweb.account_types = AccountTypes 14 15 16 InstitutionID = 'us-003429' 17 WesabeAuth = MacKeychain.new.internet_password(:server => 'www.wesabe.com') 18 19 wesabe = Wesabe.new(WesabeAuth.account, WesabeAuth.password) 20 21 22 acc = *easyweb.accounts('TD GREEN VISA') 23 ofx = acc.all_data(EasyWeb::Quicken) 24 wesabe.upload(ofx, InstitutionID) 15 acc = easyweb.account(acc_name) 16 ofxs = acc.download_all 17 Dir.mkdir(dir) unless File.directory?(dir) 18 ofxs.each_with_index do |o, i| 19 open(File.join(dir, "%03d.ofx" % [i]), 'w') { |f| f.write(o) } 20 end -
easyweb/trunk/script/wesabe-update.rb
r1054 r1064 1 1 #!/usr/bin/ruby 2 require 'easyweb' 3 require 'keychain' 2 require 'rubygems' 4 3 require 'wesabe' 5 4 6 # EasyWeb account data constants 7 EasyWebAuth = EasyWeb::KeychainAuthenticator.new('EasyWeb') 8 AccountTypes = { 'VALUE ACCOUNT' => EasyWeb::Savings, 9 'TD GREEN VISA' => EasyWeb::CreditCard } 5 # Requires an unreleased version for https passwords 6 require 'rkeychain' 10 7 11 # Setup EasyWeb, with debug capabilities 12 easyweb = EasyWeb.new(:log_file => 'EasyWeb.log', 13 :marshal_on_error => 'EasyWeb.marshal') 14 easyweb.login(EasyWebAuth) 15 easyweb.account_types = AccountTypes 8 require 'easyweb' 16 9 17 # S etup Wesabe account18 InstitutionID = 'us-003429' 19 WesabeAuth = MacKeychain.new.internet_password(:server => 'www.wesabe.com') 20 wesabe = Wesabe.new(WesabeAuth.account, WesabeAuth.password) 10 # Some constants 11 Account = Struct.new(:easyweb_name, :wesabe_name, :type) 12 CAFile = '/usr/share/curl/curl-ca-bundle.crt' 13 MaxStatements = 3 21 14 22 # Download the account data, and upload to Wesabe 23 easyweb.accounts.each do |acc| 24 ofx = acc.recent_data(EasyWeb::Quicken) 25 wesabe.upload(ofx, InstitutionID) 15 16 # Configuration (Oh noez, people will know some of my account names) 17 Accounts = [ 18 Account.new('TD GREEN VISA', 'TD Canada Trust - Credit Card', 19 'Credit card'), 20 # Account.new('VALUE ACCOUNT', 'TD Canada Trust - Savings', 'Savings') 21 ] 22 KeychainItem = 'EasyWeb' 23 WesabeAccount = 'vasi' 24 25 26 easyweb = EasyWeb.new( 27 :CAFile => CAFile, 28 :DebugDir => nil, 29 :AuthMacKeychain => KeychainItem, 30 :AccountTypeHash => Accounts.inject({}) \ 31 { |h,a| h[a.wesabe_name] = a.type; h } 32 ) 33 wesabe = Wesabe.new(WesabeAccount, Keychain.lookup_internet_passwd( 34 'serverName' => 'www.wesabe.com', 'accountName' => WesabeAccount)) 35 36 Accounts.each do |acc| 37 eacc = easyweb.account(acc.easyweb_name) 38 wacc = wesabe.accounts.find { |a| a.name == acc.wesabe_name } 39 eacc.download_statements(MaxStatements).each_with_index do |stmt, i| 40 puts "Upload #{i + 1} for #{eacc.name}" 41 upload = wacc.new_upload 42 upload.statement = stmt 43 upload.upload! 44 end 26 45 end 27 28 # Remove the debug files if we finish successfully29 %w[marshal log].map { |ext| "EasyWeb.#{ext}" }.each do |x|30 File.unlink(x) if File.exist?(x)31 end
