ng-bank-parser 0.1.5 → 0.1.6
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +8 -8
- data/README.md +3 -3
- data/lib/ng-bank-parser/banks.rb +1 -1
- data/lib/ng-bank-parser/parsers/accessbank-pdf-parser/helpers.rb +2 -2
- data/lib/ng-bank-parser/parsers/firstbank-pdf-parser.rb +9 -7
- data/lib/ng-bank-parser/parsers/firstbank-pdf-parser/helpers.rb +17 -23
- data/lib/ng-bank-parser/parsers/gtb-excel-parser.rb +2 -2
- data/lib/ng-bank-parser/parsers/hb-pdf-parser.rb +1 -2
- data/lib/ng-bank-parser/parsers/hb-pdf-parser/hb_constants.rb +2 -2
- data/lib/ng-bank-parser/parsers/uba-pdf-parser.rb +2 -2
- data/lib/ng-bank-parser/router.rb +1 -1
- data/lib/ng-bank-parser/version.rb +1 -1
- metadata +23 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5904cb150c3b458c49643ee2ff3717ddaf01cc30
|
|
4
|
+
data.tar.gz: 875fe8dc6feaccba17d8da19f27ebde90f45e0c0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5e09a5b5685f2d03555aeaf0ca727e3428acd730f2da07463b54c988d6351538ca58a20b8bbd77aaa4612dd06a513c0fe88aaac2956b60b190334b82111fe9fd
|
|
7
|
+
data.tar.gz: c4e7303f6756d87d1d91c1bb48a94d3b99101dc2fe1ba16a0aa04b5e0743c038fb686a0c31a2998aaeee2daf2ab9feed485dd78ea9a146903da1795022b35d70
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ng-bank-parser (0.1.
|
|
4
|
+
ng-bank-parser (0.1.5)
|
|
5
5
|
activesupport
|
|
6
6
|
nokogiri
|
|
7
7
|
pdf-reader
|
|
@@ -20,19 +20,19 @@ GEM
|
|
|
20
20
|
tzinfo (~> 1.1)
|
|
21
21
|
afm (0.2.2)
|
|
22
22
|
diff-lcs (1.2.5)
|
|
23
|
-
domain_name (0.5.
|
|
23
|
+
domain_name (0.5.25)
|
|
24
24
|
unf (>= 0.0.5, < 1.0.0)
|
|
25
25
|
hashery (2.1.1)
|
|
26
26
|
http-cookie (1.0.2)
|
|
27
27
|
domain_name (~> 0.5)
|
|
28
28
|
i18n (0.7.0)
|
|
29
29
|
json (1.8.3)
|
|
30
|
-
mime-types (2.
|
|
31
|
-
|
|
32
|
-
minitest (5.8.
|
|
33
|
-
netrc (0.
|
|
34
|
-
nokogiri (1.6.
|
|
35
|
-
|
|
30
|
+
mime-types (2.99)
|
|
31
|
+
mini_portile2 (2.0.0)
|
|
32
|
+
minitest (5.8.3)
|
|
33
|
+
netrc (0.11.0)
|
|
34
|
+
nokogiri (1.6.7)
|
|
35
|
+
mini_portile2 (~> 2.0.0.rc2)
|
|
36
36
|
pdf-reader (1.3.3)
|
|
37
37
|
Ascii85 (~> 1.0.0)
|
|
38
38
|
afm (~> 0.2.0)
|
data/README.md
CHANGED
|
@@ -39,7 +39,7 @@ result = NgBankParser::Router.parse(bank_key, file_path, password)
|
|
|
39
39
|
|
|
40
40
|
```ruby
|
|
41
41
|
result = {
|
|
42
|
-
status:
|
|
42
|
+
status: 200,
|
|
43
43
|
data: {
|
|
44
44
|
bank_name: the_bank_name,
|
|
45
45
|
account_number: the_account_number,
|
|
@@ -51,11 +51,11 @@ result = {
|
|
|
51
51
|
}
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
`:status` can either be
|
|
54
|
+
`:status` can either be 200 or 400. 200 for when the parsing is succesful and 200 for when it's not. A status of 400 is accompanied with an error message that aims to clarify why it could not parse the file.
|
|
55
55
|
|
|
56
56
|
```ruby
|
|
57
57
|
result = {
|
|
58
|
-
status:
|
|
58
|
+
status: 400,
|
|
59
59
|
message: "RELEVANT ERROR MESSAGE"
|
|
60
60
|
}
|
|
61
61
|
```
|
data/lib/ng-bank-parser/banks.rb
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
require 'pdf-reader'
|
|
2
2
|
require_relative 'firstbank-pdf-parser/helpers'
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
module NgBankParser
|
|
5
6
|
class FirstbankPdf
|
|
6
7
|
extend FirstbankPdfHelpers
|
|
7
8
|
|
|
8
|
-
@@transactions = []
|
|
9
|
-
|
|
10
9
|
def self.parse(path, password = nil)
|
|
11
10
|
accepted_formats = [".pdf"];
|
|
12
11
|
unless accepted_formats.include? File.extname(path)
|
|
@@ -29,15 +28,16 @@ module NgBankParser
|
|
|
29
28
|
return error_message 'Unable to read account details'
|
|
30
29
|
end
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
raw_transactions = contains_transactions_table?
|
|
32
|
+
if raw_transactions
|
|
33
|
+
bdd = extract_transactions(clean(raw_transactions))
|
|
34
34
|
data = {}
|
|
35
35
|
data[:bank_name] = 'First Bank'
|
|
36
36
|
data[:account_number] = get_account_number
|
|
37
37
|
data[:account_name] = get_account_name
|
|
38
38
|
data[:from_date] = get_from_date
|
|
39
39
|
data[:to_date] = get_to_date
|
|
40
|
-
data[:transactions] =
|
|
40
|
+
data[:transactions] = bdd
|
|
41
41
|
send_response data
|
|
42
42
|
else
|
|
43
43
|
return error_message 'Could not find any transactions'
|
|
@@ -47,6 +47,7 @@ module NgBankParser
|
|
|
47
47
|
private
|
|
48
48
|
|
|
49
49
|
def self.extract_transactions(jagged_array = [[]])
|
|
50
|
+
arr = []
|
|
50
51
|
jagged_array.each do |array|
|
|
51
52
|
if is_transaction_row? array
|
|
52
53
|
transaction = {}
|
|
@@ -62,11 +63,12 @@ module NgBankParser
|
|
|
62
63
|
transaction[:type] = 'debit'
|
|
63
64
|
update_last_balance transaction[:balance]
|
|
64
65
|
end
|
|
65
|
-
|
|
66
|
+
arr << transaction
|
|
66
67
|
else
|
|
67
|
-
|
|
68
|
+
arr.last[:remarks] += array[0]
|
|
68
69
|
end
|
|
69
70
|
end
|
|
71
|
+
arr
|
|
70
72
|
end
|
|
71
73
|
|
|
72
74
|
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
require 'pdf-reader'
|
|
2
2
|
require 'date'
|
|
3
3
|
require 'open-uri'
|
|
4
|
-
require 'securerandom'
|
|
5
4
|
require_relative 'statement_utils'
|
|
6
5
|
require_relative '../../pdf-unlocker.rb'
|
|
7
6
|
|
|
8
7
|
module NgBankParser
|
|
9
8
|
module FirstbankPdfHelpers
|
|
10
9
|
include StatementUtils
|
|
11
|
-
|
|
10
|
+
|
|
12
11
|
@@pdf_reader = nil
|
|
13
|
-
@@raw_transactions = [[]]
|
|
14
12
|
@@account_name = nil
|
|
15
13
|
@@account_number = nil
|
|
16
14
|
@@last_balance = nil
|
|
@@ -29,7 +27,6 @@ module NgBankParser
|
|
|
29
27
|
|
|
30
28
|
def get_unlocked_pdf? path, password
|
|
31
29
|
response = PDFUnlocker.unlock(path, password)
|
|
32
|
-
|
|
33
30
|
return false unless response
|
|
34
31
|
if response.include? 'Unlock Failed'
|
|
35
32
|
return false
|
|
@@ -40,26 +37,15 @@ module NgBankParser
|
|
|
40
37
|
@@pdf_reader = PDF::Reader.new(pseudo_file)
|
|
41
38
|
return true
|
|
42
39
|
rescue
|
|
43
|
-
return false
|
|
40
|
+
return false
|
|
44
41
|
end
|
|
45
42
|
end
|
|
46
43
|
end
|
|
47
44
|
|
|
48
45
|
|
|
49
|
-
def get_raw_transactions
|
|
50
|
-
@@raw_transactions
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
|
|
54
46
|
def get_transaction_data
|
|
55
47
|
pages = get_pages @@pdf_reader
|
|
56
|
-
pages
|
|
57
|
-
page_text = get_page_text page
|
|
58
|
-
index = get_transaction_table_index page_text
|
|
59
|
-
unless index == -1
|
|
60
|
-
add_to_transactions page_text[index..-1]
|
|
61
|
-
end
|
|
62
|
-
end
|
|
48
|
+
get_all_transactions(pages)
|
|
63
49
|
end
|
|
64
50
|
|
|
65
51
|
|
|
@@ -104,7 +90,6 @@ module NgBankParser
|
|
|
104
90
|
|
|
105
91
|
def contains_transactions_table?
|
|
106
92
|
get_transaction_data
|
|
107
|
-
@@raw_transactions
|
|
108
93
|
end
|
|
109
94
|
|
|
110
95
|
|
|
@@ -157,7 +142,7 @@ module NgBankParser
|
|
|
157
142
|
|
|
158
143
|
def error_message msg
|
|
159
144
|
return {
|
|
160
|
-
status:
|
|
145
|
+
status: 400,
|
|
161
146
|
message: msg
|
|
162
147
|
}
|
|
163
148
|
end
|
|
@@ -165,7 +150,7 @@ module NgBankParser
|
|
|
165
150
|
|
|
166
151
|
def send_response data
|
|
167
152
|
return {
|
|
168
|
-
status:
|
|
153
|
+
status: 200,
|
|
169
154
|
data: data
|
|
170
155
|
}
|
|
171
156
|
end
|
|
@@ -173,10 +158,19 @@ module NgBankParser
|
|
|
173
158
|
|
|
174
159
|
private
|
|
175
160
|
|
|
176
|
-
def
|
|
177
|
-
|
|
178
|
-
|
|
161
|
+
def get_all_transactions pages
|
|
162
|
+
raw_transactions = [[]]
|
|
163
|
+
pages.each do |page|
|
|
164
|
+
page_text = get_page_text page
|
|
165
|
+
index = get_transaction_table_index page_text
|
|
166
|
+
unless index == -1
|
|
167
|
+
lines = page_text[index..-1]
|
|
168
|
+
lines.each do |line|
|
|
169
|
+
raw_transactions << line.strip.split(/\s\s+/)
|
|
170
|
+
end
|
|
171
|
+
end
|
|
179
172
|
end
|
|
173
|
+
return raw_transactions
|
|
180
174
|
end
|
|
181
175
|
|
|
182
176
|
end
|
|
@@ -57,13 +57,12 @@ module NgBankParser
|
|
|
57
57
|
return {
|
|
58
58
|
status: VALID_ACCOUNT_STATUS,
|
|
59
59
|
data: {
|
|
60
|
-
bank_name:
|
|
60
|
+
bank_name: NgBankParser::Banks::BANK_DEFINITIONS[1][:name],
|
|
61
61
|
account_number: @account_number,
|
|
62
62
|
account_name: @account_name,
|
|
63
63
|
from_date: @start_date,
|
|
64
64
|
to_date: @end_date,
|
|
65
65
|
transactions: @transactions
|
|
66
|
-
# reader: @reader
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
68
|
end
|
|
@@ -87,7 +87,7 @@ module NgBankParser
|
|
|
87
87
|
|
|
88
88
|
def return_payload
|
|
89
89
|
return {
|
|
90
|
-
status:
|
|
90
|
+
status: 200,
|
|
91
91
|
data: {
|
|
92
92
|
bank_name: @bank_name,
|
|
93
93
|
account_number: @account_number,
|
|
@@ -101,7 +101,7 @@ module NgBankParser
|
|
|
101
101
|
|
|
102
102
|
def invalid_file
|
|
103
103
|
return {
|
|
104
|
-
status:
|
|
104
|
+
status: 400, message: INVALID_FILE_STRING
|
|
105
105
|
}
|
|
106
106
|
end
|
|
107
107
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ng-bank-parser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Opemipo Aikomo
|
|
@@ -11,118 +11,118 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: exe
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2015-
|
|
14
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: bundler
|
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
|
19
19
|
requirements:
|
|
20
|
-
- - ~>
|
|
20
|
+
- - "~>"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
22
|
version: '1.10'
|
|
23
23
|
type: :development
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
26
|
requirements:
|
|
27
|
-
- - ~>
|
|
27
|
+
- - "~>"
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
29
|
version: '1.10'
|
|
30
30
|
- !ruby/object:Gem::Dependency
|
|
31
31
|
name: rake
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
|
33
33
|
requirements:
|
|
34
|
-
- - ~>
|
|
34
|
+
- - "~>"
|
|
35
35
|
- !ruby/object:Gem::Version
|
|
36
36
|
version: '10.0'
|
|
37
37
|
type: :development
|
|
38
38
|
prerelease: false
|
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
40
|
requirements:
|
|
41
|
-
- - ~>
|
|
41
|
+
- - "~>"
|
|
42
42
|
- !ruby/object:Gem::Version
|
|
43
43
|
version: '10.0'
|
|
44
44
|
- !ruby/object:Gem::Dependency
|
|
45
45
|
name: rspec
|
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
|
47
47
|
requirements:
|
|
48
|
-
- -
|
|
48
|
+
- - ">="
|
|
49
49
|
- !ruby/object:Gem::Version
|
|
50
50
|
version: '0'
|
|
51
51
|
type: :development
|
|
52
52
|
prerelease: false
|
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
54
54
|
requirements:
|
|
55
|
-
- -
|
|
55
|
+
- - ">="
|
|
56
56
|
- !ruby/object:Gem::Version
|
|
57
57
|
version: '0'
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: nokogiri
|
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
|
61
61
|
requirements:
|
|
62
|
-
- -
|
|
62
|
+
- - ">="
|
|
63
63
|
- !ruby/object:Gem::Version
|
|
64
64
|
version: '0'
|
|
65
65
|
type: :runtime
|
|
66
66
|
prerelease: false
|
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
|
69
|
-
- -
|
|
69
|
+
- - ">="
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '0'
|
|
72
72
|
- !ruby/object:Gem::Dependency
|
|
73
73
|
name: roo
|
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
|
75
75
|
requirements:
|
|
76
|
-
- -
|
|
76
|
+
- - ">="
|
|
77
77
|
- !ruby/object:Gem::Version
|
|
78
78
|
version: '0'
|
|
79
79
|
type: :runtime
|
|
80
80
|
prerelease: false
|
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
|
82
82
|
requirements:
|
|
83
|
-
- -
|
|
83
|
+
- - ">="
|
|
84
84
|
- !ruby/object:Gem::Version
|
|
85
85
|
version: '0'
|
|
86
86
|
- !ruby/object:Gem::Dependency
|
|
87
87
|
name: pdf-reader
|
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
|
89
89
|
requirements:
|
|
90
|
-
- -
|
|
90
|
+
- - ">="
|
|
91
91
|
- !ruby/object:Gem::Version
|
|
92
92
|
version: '0'
|
|
93
93
|
type: :runtime
|
|
94
94
|
prerelease: false
|
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
|
96
96
|
requirements:
|
|
97
|
-
- -
|
|
97
|
+
- - ">="
|
|
98
98
|
- !ruby/object:Gem::Version
|
|
99
99
|
version: '0'
|
|
100
100
|
- !ruby/object:Gem::Dependency
|
|
101
101
|
name: activesupport
|
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
|
103
103
|
requirements:
|
|
104
|
-
- -
|
|
104
|
+
- - ">="
|
|
105
105
|
- !ruby/object:Gem::Version
|
|
106
106
|
version: '0'
|
|
107
107
|
type: :runtime
|
|
108
108
|
prerelease: false
|
|
109
109
|
version_requirements: !ruby/object:Gem::Requirement
|
|
110
110
|
requirements:
|
|
111
|
-
- -
|
|
111
|
+
- - ">="
|
|
112
112
|
- !ruby/object:Gem::Version
|
|
113
113
|
version: '0'
|
|
114
114
|
- !ruby/object:Gem::Dependency
|
|
115
115
|
name: rest-client
|
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
|
117
117
|
requirements:
|
|
118
|
-
- -
|
|
118
|
+
- - ">="
|
|
119
119
|
- !ruby/object:Gem::Version
|
|
120
120
|
version: '0'
|
|
121
121
|
type: :runtime
|
|
122
122
|
prerelease: false
|
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
|
124
124
|
requirements:
|
|
125
|
-
- -
|
|
125
|
+
- - ">="
|
|
126
126
|
- !ruby/object:Gem::Version
|
|
127
127
|
version: '0'
|
|
128
128
|
description: This is a simple gem to parse Nigerian bank statements of all formats.
|
|
@@ -135,8 +135,8 @@ executables: []
|
|
|
135
135
|
extensions: []
|
|
136
136
|
extra_rdoc_files: []
|
|
137
137
|
files:
|
|
138
|
-
- .gitignore
|
|
139
|
-
- .rspec
|
|
138
|
+
- ".gitignore"
|
|
139
|
+
- ".rspec"
|
|
140
140
|
- CODE_OF_CONDUCT.md
|
|
141
141
|
- Gemfile
|
|
142
142
|
- Gemfile.lock
|
|
@@ -189,17 +189,17 @@ require_paths:
|
|
|
189
189
|
- lib
|
|
190
190
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
191
191
|
requirements:
|
|
192
|
-
- -
|
|
192
|
+
- - ">="
|
|
193
193
|
- !ruby/object:Gem::Version
|
|
194
194
|
version: '0'
|
|
195
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
requirements:
|
|
197
|
-
- -
|
|
197
|
+
- - ">="
|
|
198
198
|
- !ruby/object:Gem::Version
|
|
199
199
|
version: '0'
|
|
200
200
|
requirements: []
|
|
201
201
|
rubyforge_project:
|
|
202
|
-
rubygems_version: 2.4.
|
|
202
|
+
rubygems_version: 2.4.5.1
|
|
203
203
|
signing_key:
|
|
204
204
|
specification_version: 4
|
|
205
205
|
summary: This is a simple gem to parse Nigerian bank statements of all formats created
|