ofx-data 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7a1425be6f93f135b04c3a39eec47e73787c9310
4
- data.tar.gz: e977cc41b809134110e0344461f5862a0ba62146
3
+ metadata.gz: 4f486a042e7de701a31e4e273df30279f3dec571
4
+ data.tar.gz: 9caa33a6385589f1fa13c58755142a726077da75
5
5
  SHA512:
6
- metadata.gz: 2b6d4a47a0ad959f6ebf8f301dca5ae6d9081d43808766e2c4e325059553ac5b1c2c24b2352255f6006274e108c742ba3e472643dc64e93ca57397867d2369d4
7
- data.tar.gz: fd44d27011784ff9a6947611f91d4c9aef23893901ef1f55cd0bb0bcfc474be3e23dd0ed1f2168e866e9abef70d41261184e65a73e915c2a570cb8e99b03a7c6
6
+ metadata.gz: 9af406ea33317f3193283d9f46351d1f4a2625c390b590ec4ffd55cf004c3d7431a8dca5223472b650e11e957f1d7057b5f51636a12b1af8234686a077abe6a5
7
+ data.tar.gz: d70724569ee5e327711b79998a2a3d01c6a5577e7a95289c5a0e12902365680c4d4ae3add1cf548a4fa6074bfb8db3f59f2f7ce9ec42f4367fd9e4c32ad3e3c4
@@ -37,6 +37,7 @@ module OFX
37
37
  @payee_id = opts.fetch(:payee_id, nil)
38
38
  raise ArgumentError, ":payee_id must be 1-12 characters long" if @payee_id && @payee_id.length > 12
39
39
  @memo = opts.fetch(:memo, nil)
40
+ raise ArgumentError, ":memo must be 1-255 characters long" if @memo && @memo.length > 255
40
41
  end
41
42
 
42
43
  def ofx_type
@@ -2,7 +2,8 @@ module OFX
2
2
  module Data
3
3
  class Declaration
4
4
  DEFAULTS = {
5
- :"2.0.3" => {ofxheader: "200", version: "203"}
5
+ :"2.0.3" => {ofxheader: "200", version: "203"},
6
+ :"1.0.2" => {ofxheader: "100", version: "102"}
6
7
  }
7
8
 
8
9
  def self.[](key)
@@ -13,12 +14,13 @@ module OFX
13
14
  self[:"2.0.3"]
14
15
  end
15
16
 
16
- attr_reader :ofxheader, :version, :security, :oldfileuid, :newfileuid
17
+ attr_reader :ofxheader, :version, :security, :encoding, :oldfileuid, :newfileuid
17
18
 
18
19
  def initialize(opts)
19
20
  @ofxheader = opts.fetch(:ofxheader, "NONE")
20
21
  @version = opts.fetch(:version, "NONE")
21
22
  @security = opts.fetch(:security, "NONE")
23
+ @encoding = opts.fetch(:encoding, "UTF-8")
22
24
  @oldfileuid = opts.fetch(:oldfileuid, "NONE")
23
25
  @newfileuid = opts.fetch(:newfileuid, "NONE")
24
26
  end
@@ -1,46 +1,2 @@
1
- require "ofx/data/serialization"
2
- require "ofx/data/serialization/common"
3
-
4
- module OFX
5
- module Data
6
- module Serialization
7
- class Document
8
- include Common
9
-
10
- def self.register_with(registry)
11
- serializer = new(registry)
12
- registry.register(serializer.registry_entry)
13
- end
14
-
15
- attr_reader :registry
16
-
17
- def initialize(registry)
18
- @registry = registry
19
- end
20
-
21
- def default_registry_entry_args
22
- [:document, nil]
23
- end
24
-
25
- def registry_entry
26
- Registry::Entry.new(self, *default_registry_entry_args)
27
- end
28
-
29
- def serialize(document, builder)
30
- decl = document.declaration
31
- builder.instruct!
32
- builder.instruct!(:OFX, {
33
- OFXHEADER: decl.ofxheader,
34
- VERSION: decl.version,
35
- SECURITY: decl.security,
36
- OLDFILEUID: decl.oldfileuid,
37
- NEWFILEUID: decl.newfileuid
38
- })
39
- builder.OFX do |builder|
40
- serialize_object(document.message_sets, builder)
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
1
+ require "ofx/data/serialization/document/xml"
2
+ require "ofx/data/serialization/document/sgml"
@@ -0,0 +1,84 @@
1
+ require "ofx/data/serialization/common"
2
+
3
+ module OFX
4
+ module Data
5
+ module Serialization
6
+ module Document
7
+ class SGML
8
+ include Common
9
+
10
+ def self.register_with(registry)
11
+ serializer = new(registry)
12
+ registry.register(serializer.registry_entry)
13
+ end
14
+
15
+ attr_reader :registry
16
+
17
+ def initialize(registry)
18
+ @registry = registry
19
+ end
20
+
21
+ def default_registry_entry_args
22
+ [:document, nil]
23
+ end
24
+
25
+ def registry_entry
26
+ Registry::Entry.new(self, *default_registry_entry_args)
27
+ end
28
+
29
+ def serialize(document, builder)
30
+ write_headers(builder, document.declaration)
31
+ builder.OFX do |builder|
32
+ serialize_object(document.message_sets, builder)
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def write_headers(builder, declaration)
39
+ {
40
+ OFXHEADER: declaration.ofxheader,
41
+ DATA: "OFXSGML",
42
+ VERSION: declaration.version,
43
+ SECURITY: declaration.security,
44
+ ENCODING: encoding(declaration),
45
+ CHARSET: charset(declaration),
46
+ COMPRESSION: "NONE",
47
+ OLDFILEUID: declaration.oldfileuid,
48
+ NEWFILEUID: declaration.newfileuid
49
+ }.each do |name, value|
50
+ write_header(builder, name, value)
51
+ end
52
+ builder << "\r\n"
53
+ end
54
+
55
+ def write_header(builder, name, value)
56
+ builder << "#{name}:#{value}\r\n"
57
+ end
58
+
59
+ def encoding(declaration)
60
+ case Encoding.find(declaration.encoding)
61
+ when Encoding::UTF_8
62
+ "UTF-8"
63
+ else
64
+ "USASCII"
65
+ end
66
+ end
67
+
68
+ def charset(declaration)
69
+ case Encoding.find(declaration.encoding)
70
+ when Encoding::UTF_8
71
+ "NONE"
72
+ when Encoding::Windows_1252
73
+ "1252"
74
+ when Encoding::ISO_8859_1
75
+ "ISO-8859-1"
76
+ else
77
+ raise ArgumentError, "Declaration encoding (#{declaration.encoding}) is not one of (or equivalent to) UTF-8, ISO-8859-1, or Windows-1252"
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,48 @@
1
+ require "ofx/data/serialization"
2
+ require "ofx/data/serialization/common"
3
+
4
+ module OFX
5
+ module Data
6
+ module Serialization
7
+ module Document
8
+ class XML
9
+ include Common
10
+
11
+ def self.register_with(registry)
12
+ serializer = new(registry)
13
+ registry.register(serializer.registry_entry)
14
+ end
15
+
16
+ attr_reader :registry
17
+
18
+ def initialize(registry)
19
+ @registry = registry
20
+ end
21
+
22
+ def default_registry_entry_args
23
+ [:document, nil]
24
+ end
25
+
26
+ def registry_entry
27
+ Registry::Entry.new(self, *default_registry_entry_args)
28
+ end
29
+
30
+ def serialize(document, builder)
31
+ decl = document.declaration
32
+ builder.instruct!
33
+ builder.instruct!(:OFX, {
34
+ OFXHEADER: decl.ofxheader,
35
+ VERSION: decl.version,
36
+ SECURITY: decl.security,
37
+ OLDFILEUID: decl.oldfileuid,
38
+ NEWFILEUID: decl.newfileuid
39
+ })
40
+ builder.OFX do |builder|
41
+ serialize_object(document.message_sets, builder)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,38 @@
1
+ require "builder"
2
+ require "ofx/data/serialization/registry"
3
+ require "ofx/data/serialization"
4
+
5
+ module OFX
6
+ module Data
7
+ module Serialization
8
+ module OFX102
9
+ SERIALIZER_CLASSES = [
10
+ Document::SGML, Transaction::Status,
11
+ MessageSets, MessageSets::Banking::Response,
12
+ MessageSets::Signon::Response, Signon::Response,
13
+ Banking::Balance, Banking::BankAccount,
14
+ Banking::Transaction, Banking::Statement::Response,
15
+ Banking::Statement::Transaction::Response
16
+ ]
17
+
18
+ def self.registry
19
+ Registry.build { |r|
20
+ SERIALIZER_CLASSES.each do |klass|
21
+ klass.register_with(r)
22
+ end
23
+ }
24
+ end
25
+
26
+ def self.builder
27
+ Builder::XmlMarkup.new
28
+ end
29
+
30
+ def self.serialize(object)
31
+ output = builder
32
+ registry.serializer_for(object.ofx_type).serialize(object, output)
33
+ output.target!
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -7,7 +7,7 @@ module OFX
7
7
  module Serialization
8
8
  module OFX203
9
9
  SERIALIZER_CLASSES = [
10
- Document, Transaction::Status,
10
+ Document::XML, Transaction::Status,
11
11
  MessageSets, MessageSets::Banking::Response,
12
12
  MessageSets::Signon::Response, Signon::Response,
13
13
  Banking::Balance, Banking::BankAccount,
@@ -1,5 +1,5 @@
1
1
  module OFX
2
2
  module Data
3
- VERSION = "0.2.4"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ofx-data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Patterson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-04 00:00:00.000000000 Z
11
+ date: 2016-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -124,9 +124,12 @@ files:
124
124
  - lib/ofx/data/serialization/banking/transaction.rb
125
125
  - lib/ofx/data/serialization/common.rb
126
126
  - lib/ofx/data/serialization/document.rb
127
+ - lib/ofx/data/serialization/document/sgml.rb
128
+ - lib/ofx/data/serialization/document/xml.rb
127
129
  - lib/ofx/data/serialization/message_sets.rb
128
130
  - lib/ofx/data/serialization/message_sets/banking.rb
129
131
  - lib/ofx/data/serialization/message_sets/signon.rb
132
+ - lib/ofx/data/serialization/ofx102.rb
130
133
  - lib/ofx/data/serialization/ofx203.rb
131
134
  - lib/ofx/data/serialization/registry.rb
132
135
  - lib/ofx/data/serialization/registry/entry.rb