ofx-parser 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,7 @@
1
+ == 1.0.1
2
+
3
+ * Added support for getting an initial list of accounts, see Ofx#signup_account_info
4
+
1
5
  == 1.0.0 / 2007-06-24
2
6
 
3
7
  * Initial release.
@@ -8,5 +8,6 @@ lib/ofx.rb
8
8
  lib/sic.rb
9
9
  test/fixtures/banking.ofx.sgml
10
10
  test/fixtures/creditcard.ofx.sgml
11
+ test/fixtures/list.ofx.sgml
11
12
  test/fixtures/with_spaces.ofx.sgml
12
- test/test_ofx_parser.rb
13
+ test/test_ofx_parser.rb
data/Rakefile CHANGED
@@ -11,7 +11,6 @@ Hoe.new('ofx-parser', OfxParser::VERSION) do |p|
11
11
  p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
12
12
  p.url = 'http://ofx-parser.rubyforge.org/'
13
13
  p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
14
- p.remote_rdoc_dir = '' # Release to root
15
14
  p.extra_deps << ["hpricot", ">= 0.6"]
16
15
  p.need_zip = true
17
16
  p.need_tar = false
@@ -7,7 +7,7 @@ require 'date'
7
7
  end
8
8
 
9
9
  module OfxParser
10
- VERSION = '1.0.0'
10
+ VERSION = '1.0.1'
11
11
 
12
12
  class OfxParser
13
13
 
@@ -79,6 +79,7 @@ module OfxParser
79
79
  ofx = Ofx.new
80
80
 
81
81
  ofx.sign_on = build_signon((doc/"SIGNONMSGSRSV1/SONRS"))
82
+ ofx.signup_account_info = build_info((doc/"SIGNUPMSGSRSV1/ACCTINFOTRNRS"))
82
83
  ofx.bank_account = build_bank((doc/"BANKMSGSRSV1/STMTTRNRS")) unless (doc/"BANKMSGSRSV1").empty?
83
84
  ofx.credit_card = build_credit((doc/"CREDITCARDMSGSRSV1/CCSTMTTRNRS")) unless (doc/"CREDITCARDMSGSRSV1").empty?
84
85
  #build_investment((doc/"SIGNONMSGSRQV1"))
@@ -98,6 +99,19 @@ module OfxParser
98
99
  sign_on
99
100
  end
100
101
 
102
+ def self.build_info(doc)
103
+ account_infos = []
104
+
105
+ (doc/"ACCTINFO").each do |info_doc|
106
+ acc_info = AccountInfo.new
107
+ acc_info.desc = (info_doc/"DESC").inner_text
108
+ acc_info.number = (info_doc/"ACCTID").inner_text
109
+ account_infos << acc_info
110
+ end
111
+
112
+ account_infos
113
+ end
114
+
101
115
  def self.build_bank(doc)
102
116
  acct = BankAccount.new
103
117
 
data/lib/ofx.rb CHANGED
@@ -10,7 +10,7 @@ module OfxParser
10
10
  end
11
11
 
12
12
  # Returns pennies for a given string amount, i.e:
13
- # '-123.45' => 12345
13
+ # '-123.45' => -12345
14
14
  # '123' => 12300
15
15
  def pennies_for(amount)
16
16
  return nil if amount == ""
@@ -47,7 +47,8 @@ module OfxParser
47
47
  # * currency symbols are an iso4217 3-letter code
48
48
  # * language is defined by iso639 3-letter code
49
49
  class Ofx
50
- attr_accessor :header, :sign_on, :bank_account, :credit_card, :investment
50
+ attr_accessor :header, :sign_on, :signup_account_info,
51
+ :bank_account, :credit_card, :investment
51
52
 
52
53
  def accounts
53
54
  accounts = []
@@ -63,6 +64,10 @@ module OfxParser
63
64
  attr_accessor :status, :date, :language, :institute
64
65
  end
65
66
 
67
+ class AccountInfo
68
+ attr_accessor :desc, :number
69
+ end
70
+
66
71
  class Account
67
72
  attr_accessor :number, :statement, :transaction_uid
68
73
  end
@@ -0,0 +1,53 @@
1
+ OFXHEADER:100
2
+ DATA:OFXSGML
3
+ VERSION:102
4
+ SECURITY:NONE
5
+ ENCODING:USASCII
6
+ CHARSET:1252
7
+ COMPRESSION:NONE
8
+ OLDFILEUID:NONE
9
+ NEWFILEUID:e1dffb32-0a88-1111-12fb-111056c11111
10
+
11
+ <OFX>
12
+ <SIGNONMSGSRSV1>
13
+ <SONRS>
14
+ <STATUS>
15
+ <CODE>0
16
+ <SEVERITY>INFO
17
+ </STATUS>
18
+ <DTSERVER>20070702051227
19
+ <LANGUAGE>ENG
20
+ <DTPROFUP>20040828230101
21
+ <FI>
22
+ <ORG>Citigroup
23
+ <FID>24909
24
+ </FI>
25
+ <SESSCOOKIE>11111
26
+ </SONRS>
27
+ </SIGNONMSGSRSV1>
28
+ <SIGNUPMSGSRSV1>
29
+ <ACCTINFOTRNRS>
30
+ <TRNUID>e1dffb32-0a88-1111-12fb-111056c11111
31
+ <STATUS>
32
+ <CODE>0
33
+ <SEVERITY>INFO
34
+ </STATUS>
35
+ <CLTCOOKIE>4
36
+ <ACCTINFORS>
37
+ <DTACCTUP>20070702045709
38
+ <ACCTINFO>
39
+ <DESC>CREDIT CARD ************1111
40
+ <CCACCTINFO>
41
+ <CCACCTFROM>
42
+ <ACCTID>XXXXXXXXXXXX1111
43
+ </CCACCTFROM>
44
+ <SUPTXDL>Y
45
+ <XFERSRC>N
46
+ <XFERDEST>N
47
+ <SVCSTATUS>ACTIVE
48
+ </CCACCTINFO>
49
+ </ACCTINFO>
50
+ </ACCTINFORS>
51
+ </ACCTINFOTRNRS>
52
+ </SIGNUPMSGSRSV1>
53
+ </OFX>
@@ -193,6 +193,17 @@ class OfxParserTest < Test::Unit::TestCase
193
193
  assert_equal '', transactions[2].memo
194
194
 
195
195
  assert_equal 1, ofx.accounts.size
196
+ assert_equal [], ofx.signup_account_info
197
+ end
198
+
199
+ def test_account_listing
200
+ ofx = OfxParser::OfxParser.parse(OFX_FILES[:list])
201
+
202
+ cc_info = ofx.signup_account_info.first
203
+ assert_equal 'CREDIT CARD ************1111', cc_info.desc
204
+ assert_equal 'XXXXXXXXXXXX1111', cc_info.number
205
+
206
+ assert_equal 0, ofx.accounts.size
196
207
  end
197
208
 
198
209
  def test_monetary_support_call
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: ofx-parser
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2007-06-26 00:00:00 -07:00
6
+ version: 1.0.1
7
+ date: 2007-07-02 00:00:00 -07:00
8
8
  summary: ofx-parser is a ruby library for parsing OFX 1.x data.
9
9
  require_paths:
10
10
  - lib
@@ -39,6 +39,7 @@ files:
39
39
  - lib/sic.rb
40
40
  - test/fixtures/banking.ofx.sgml
41
41
  - test/fixtures/creditcard.ofx.sgml
42
+ - test/fixtures/list.ofx.sgml
42
43
  - test/fixtures/with_spaces.ofx.sgml
43
44
  - test/test_ofx_parser.rb
44
45
  test_files: