ng-bank-parser 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +35 -0
  3. data/.rspec +2 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +80 -0
  7. data/LICENSE +340 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +92 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +7 -0
  13. data/lib/ng-bank-parser.rb +11 -0
  14. data/lib/ng-bank-parser/banks.rb +24 -0
  15. data/lib/ng-bank-parser/fixtures/firstbank-pdf-invalid.xlsx +0 -0
  16. data/lib/ng-bank-parser/fixtures/firstbank-pdf-valid.pdf +0 -0
  17. data/lib/ng-bank-parser/fixtures/gtb-excel-invalid.pdf +0 -0
  18. data/lib/ng-bank-parser/fixtures/gtb-excel-valid.xls +1332 -0
  19. data/lib/ng-bank-parser/fixtures/gtb-excel-valid.xlsx +0 -0
  20. data/lib/ng-bank-parser/fixtures/uba-pdf-invalid.pdf +0 -0
  21. data/lib/ng-bank-parser/fixtures/uba-pdf-valid.pdf +0 -0
  22. data/lib/ng-bank-parser/parsers/firstbank-pdf-parser.rb +81 -0
  23. data/lib/ng-bank-parser/parsers/firstbank-pdf-parser/helpers.rb +172 -0
  24. data/lib/ng-bank-parser/parsers/firstbank-pdf-parser/statement_utils.rb +51 -0
  25. data/lib/ng-bank-parser/parsers/gtb-excel-parser.rb +66 -0
  26. data/lib/ng-bank-parser/parsers/gtb-excel-parser/helpers.rb +121 -0
  27. data/lib/ng-bank-parser/parsers/uba-pdf-parser.rb +98 -0
  28. data/lib/ng-bank-parser/parsers/uba-pdf-parser/classes/string.rb +56 -0
  29. data/lib/ng-bank-parser/parsers/uba-pdf-parser/classes/transaction.rb +73 -0
  30. data/lib/ng-bank-parser/parsers/uba-pdf-parser/constants.rb +32 -0
  31. data/lib/ng-bank-parser/parsers/uba-pdf-parser/pdf_checks.rb +58 -0
  32. data/lib/ng-bank-parser/parsers/uba-pdf-parser/transaction_tools.rb +110 -0
  33. data/lib/ng-bank-parser/pdf-unlocker.rb +24 -0
  34. data/lib/ng-bank-parser/router.rb +44 -0
  35. data/lib/ng-bank-parser/version.rb +3 -0
  36. data/ng-bank-parser.gemspec +31 -0
  37. metadata +198 -0
@@ -0,0 +1,44 @@
1
+ module NgBankParser
2
+ class Router
3
+ @banks_hash = $Banks
4
+ @supported_extension_array = []
5
+ @selected_bank_index
6
+
7
+ #this takes our bank parser along with the bank name supplied from the payload so as to compare
8
+ #and see if the file extension is available for that bank
9
+ #it's result is to fill up the @supported_extension_array with the supported bank extensions
10
+ def self.parse(bank_key, path, password = nil)
11
+ @password = password;
12
+ @selected_bank_index = @banks_hash.index {|x| x[:key] == bank_key}
13
+
14
+ if @selected_bank_index.nil?
15
+ return {status: 0, message: "Your bank is not yet supported"}
16
+ else
17
+ @supported_extension_array += @banks_hash[@selected_bank_index][:parsers].map {|e| e[:extensions]}
18
+ parser_picker(path)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ #this uses the extension in the file of the uploaded payload to check support in @supported_extension_array
25
+ #and goes on to pick the parser to use for the operation
26
+ def self.parser_picker(path)
27
+ extension_name = File.extname(path).delete('.')
28
+ if @supported_extension_array.reduce(:concat).include?(extension_name)
29
+ ng_bank_parsers(path)
30
+ else
31
+ return {status: 0, message:"The '.#{extension_name}' file format is not supported for your bank."}
32
+ end
33
+ end
34
+
35
+ #Builds the the parser to use from the name and file format of the uploaded file
36
+ def self.ng_bank_parsers(path)
37
+ key = @banks_hash[@selected_bank_index][:key].capitalize
38
+ format = @banks_hash[@selected_bank_index][:parsers].map { |e| e[:format].capitalize }
39
+ class_name = key + format.reduce(:concat)
40
+ NgBankParser.const_get(class_name).parse(path, @password)
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module NgBankParser
2
+ VERSION = "0.1.2"
3
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ng-bank-parser/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ng-bank-parser"
8
+ spec.version = NgBankParser::VERSION
9
+ spec.authors = ["Opemipo Aikomo","Timilehin Ajiboye","Lolu Bodunwa","Oluro Olaoluwa"]
10
+ spec.email = ["opemipoaikomo@gmail.com"]
11
+
12
+ spec.summary = %q{This is a simple gem to parse Nigerian bank statements of all formats created by Devcenter Square}
13
+ spec.description = %q{This is a simple gem to parse Nigerian bank statements of all formats. This is a community project by Devcenter Square (devcenter-square.github.io). If your bank and/or file format is not supported, consider reading the contribute wiki and submitting a pull request.}
14
+ spec.homepage = "http://devcenter-square.github.io/ng-bank-parser/"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.10"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rspec"
25
+
26
+ spec.add_dependency "nokogiri"
27
+ spec.add_dependency "roo"
28
+ spec.add_dependency "pdf-reader"
29
+ spec.add_dependency "activesupport"
30
+ spec.add_dependency 'httmultiparty'
31
+ end
metadata ADDED
@@ -0,0 +1,198 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ng-bank-parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Opemipo Aikomo
8
+ - Timilehin Ajiboye
9
+ - Lolu Bodunwa
10
+ - Oluro Olaoluwa
11
+ autorequire:
12
+ bindir: exe
13
+ cert_chain: []
14
+ date: 2015-08-29 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: bundler
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '1.10'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.10'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ~>
35
+ - !ruby/object:Gem::Version
36
+ version: '10.0'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '10.0'
44
+ - !ruby/object:Gem::Dependency
45
+ name: rspec
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: nokogiri
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: roo
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ - !ruby/object:Gem::Dependency
87
+ name: pdf-reader
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ - !ruby/object:Gem::Dependency
101
+ name: activesupport
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ type: :runtime
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ - !ruby/object:Gem::Dependency
115
+ name: httmultiparty
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ description: This is a simple gem to parse Nigerian bank statements of all formats.
129
+ This is a community project by Devcenter Square (devcenter-square.github.io). If
130
+ your bank and/or file format is not supported, consider reading the contribute wiki
131
+ and submitting a pull request.
132
+ email:
133
+ - opemipoaikomo@gmail.com
134
+ executables: []
135
+ extensions: []
136
+ extra_rdoc_files: []
137
+ files:
138
+ - .gitignore
139
+ - .rspec
140
+ - CODE_OF_CONDUCT.md
141
+ - Gemfile
142
+ - Gemfile.lock
143
+ - LICENSE
144
+ - LICENSE.txt
145
+ - README.md
146
+ - Rakefile
147
+ - bin/console
148
+ - bin/setup
149
+ - lib/ng-bank-parser.rb
150
+ - lib/ng-bank-parser/banks.rb
151
+ - lib/ng-bank-parser/fixtures/firstbank-pdf-invalid.xlsx
152
+ - lib/ng-bank-parser/fixtures/firstbank-pdf-valid.pdf
153
+ - lib/ng-bank-parser/fixtures/gtb-excel-invalid.pdf
154
+ - lib/ng-bank-parser/fixtures/gtb-excel-valid.xls
155
+ - lib/ng-bank-parser/fixtures/gtb-excel-valid.xlsx
156
+ - lib/ng-bank-parser/fixtures/uba-pdf-invalid.pdf
157
+ - lib/ng-bank-parser/fixtures/uba-pdf-valid.pdf
158
+ - lib/ng-bank-parser/parsers/firstbank-pdf-parser.rb
159
+ - lib/ng-bank-parser/parsers/firstbank-pdf-parser/helpers.rb
160
+ - lib/ng-bank-parser/parsers/firstbank-pdf-parser/statement_utils.rb
161
+ - lib/ng-bank-parser/parsers/gtb-excel-parser.rb
162
+ - lib/ng-bank-parser/parsers/gtb-excel-parser/helpers.rb
163
+ - lib/ng-bank-parser/parsers/uba-pdf-parser.rb
164
+ - lib/ng-bank-parser/parsers/uba-pdf-parser/classes/string.rb
165
+ - lib/ng-bank-parser/parsers/uba-pdf-parser/classes/transaction.rb
166
+ - lib/ng-bank-parser/parsers/uba-pdf-parser/constants.rb
167
+ - lib/ng-bank-parser/parsers/uba-pdf-parser/pdf_checks.rb
168
+ - lib/ng-bank-parser/parsers/uba-pdf-parser/transaction_tools.rb
169
+ - lib/ng-bank-parser/pdf-unlocker.rb
170
+ - lib/ng-bank-parser/router.rb
171
+ - lib/ng-bank-parser/version.rb
172
+ - ng-bank-parser.gemspec
173
+ homepage: http://devcenter-square.github.io/ng-bank-parser/
174
+ licenses:
175
+ - MIT
176
+ metadata: {}
177
+ post_install_message:
178
+ rdoc_options: []
179
+ require_paths:
180
+ - lib
181
+ required_ruby_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ required_rubygems_version: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ requirements: []
192
+ rubyforge_project:
193
+ rubygems_version: 2.4.2
194
+ signing_key:
195
+ specification_version: 4
196
+ summary: This is a simple gem to parse Nigerian bank statements of all formats created
197
+ by Devcenter Square
198
+ test_files: []