Changeset 1064 for easyweb

Show
Ignore:
Timestamp:
09/08/08 23:58:29 (18 months ago)
Author:
vasi
Message:

seems to really work

Location:
easyweb/trunk
Files:
1 removed
5 modified
1 moved

Legend:

Unmodified
Added
Removed
  • easyweb/trunk/lib/easyweb.rb

    r1063 r1064  
    99         
    1010        # Create a new EasyWeb object, using the given delegate for callbacks 
    11         def initialize(*delegate) 
     11        def initialize(*delegate, &block) 
    1212                if delegate.size == 1 && Delegate === delegate.first 
    1313                        @delegate = delegate.first 
    1414                else 
    15                         @delegate = Delegate.new(*delegate) 
     15                        @delegate = Delegate.new(*delegate, &block) 
    1616                end 
    1717                 
  • easyweb/trunk/lib/easyweb/account.rb

    r1063 r1064  
    5959                tried = 0 
    6060                got = [] 
    61                 while max && tried < max 
     61                while max.nil? || tried < max 
    6262                        tried += 1 
    6363                        begin 
     
    6666                        rescue DownloadError => e 
    6767                                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? 
    6969                                log.warn("%s: %s" % [name, e.message]) if log 
    7070                                break if err_count > max_consec_errs # we're done 
  • easyweb/trunk/lib/easyweb/delegate.rb

    r1063 r1064  
    55#       :DelegateName => ["some", "args"]) 
    66class EasyWeb::Delegate 
    7         def initialize(*mixins) 
     7        def initialize(*mixins, &block) 
    88                @delegates = [] 
    99                 
     
    2626                @delegates.concat(mixins) 
    2727                @delegates << Interface.new 
     28                (class << self; self; end).instance_eval(&block) if block 
    2829        end 
    2930         
    30         def method_missing(meth, *args) 
     31        def delegate_method(meth, *args) 
    3132                @delegates.each do |d| 
    3233                        return d.__send__(meth, *args) if d.respond_to?(meth) 
    3334                end 
    3435        end 
     36        alias :method_missing :delegate_method 
    3537end 
    3638 
  • easyweb/trunk/lib/easyweb/delegate/debug-dir.rb

    r1063 r1064  
    1616                @log_level = level 
    1717                @debug_dir = dir 
     18                Dir.mkdir(@debug_dir) unless File.directory?(@debug_dir) 
    1819        end 
    1920end 
  • easyweb/trunk/script/all-activity.rb

    r1054 r1064  
    11#!/usr/bin/ruby 
     2require 'rubygems' 
    23require 'easyweb' 
    3 require 'keychain' 
    4 require 'wesabe' 
    54 
     5card, dir, acc_name, acc_type = ARGV 
    66 
    7 EasyWebAuth = EasyWeb::KeychainAuthenticator.new('EasyWeb') 
    8 AccountTypes = { 'VALUE ACCOUNT' => EasyWeb::Savings, 
    9         'TD GREEN VISA' => EasyWeb::CreditCard } 
     7easyweb = 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 } 
     13end 
    1014 
    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) 
     15acc = easyweb.account(acc_name) 
     16ofxs = acc.download_all 
     17Dir.mkdir(dir) unless File.directory?(dir) 
     18ofxs.each_with_index do |o, i| 
     19        open(File.join(dir, "%03d.ofx" % [i]), 'w') { |f| f.write(o) } 
     20end 
  • easyweb/trunk/script/wesabe-update.rb

    r1054 r1064  
    11#!/usr/bin/ruby 
    2 require 'easyweb' 
    3 require 'keychain' 
     2require 'rubygems' 
    43require 'wesabe' 
    54 
    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 
     6require 'rkeychain' 
    107 
    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 
     8require 'easyweb' 
    169 
    17 # Setup Wesabe account 
    18 InstitutionID = 'us-003429' 
    19 WesabeAuth = MacKeychain.new.internet_password(:server => 'www.wesabe.com') 
    20 wesabe = Wesabe.new(WesabeAuth.account, WesabeAuth.password) 
     10# Some constants 
     11Account = Struct.new(:easyweb_name, :wesabe_name, :type) 
     12CAFile = '/usr/share/curl/curl-ca-bundle.crt' 
     13MaxStatements = 3 
    2114 
    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) 
     17Accounts = [ 
     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] 
     22KeychainItem = 'EasyWeb' 
     23WesabeAccount = 'vasi' 
     24 
     25 
     26easyweb = 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) 
     33wesabe = Wesabe.new(WesabeAccount, Keychain.lookup_internet_passwd( 
     34                'serverName' => 'www.wesabe.com', 'accountName' => WesabeAccount)) 
     35 
     36Accounts.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 
    2645end 
    27  
    28 # Remove the debug files if we finish successfully 
    29 %w[marshal log].map { |ext| "EasyWeb.#{ext}" }.each do |x| 
    30         File.unlink(x) if File.exist?(x) 
    31 end