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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6521c62889ffd5475c6f76e04f79b01aa0d744bc
4
- data.tar.gz: a8b6dd72ce1d0b64872fa4e46b4e1ac9b1859360
3
+ metadata.gz: 5904cb150c3b458c49643ee2ff3717ddaf01cc30
4
+ data.tar.gz: 875fe8dc6feaccba17d8da19f27ebde90f45e0c0
5
5
  SHA512:
6
- metadata.gz: 15818a961c4c2745f6e6fc3ffffeffa20ff0e124c4caed2f6a8515abfebd4dbfc8516e6954f7599f3b72665d5cf55ee14d75d266d585eb006bd28f4f2aea64b6
7
- data.tar.gz: 194188f43d96f693f8cdedfc38730bb5aa2f97ef0dd42505230e0c247ce5d06fd9c16b1c2bddc07a118410bec25e76f2f43cfc061066bbaa75d1e546fbda81ea
6
+ metadata.gz: 5e09a5b5685f2d03555aeaf0ca727e3428acd730f2da07463b54c988d6351538ca58a20b8bbd77aaa4612dd06a513c0fe88aaac2956b60b190334b82111fe9fd
7
+ data.tar.gz: c4e7303f6756d87d1d91c1bb48a94d3b99101dc2fe1ba16a0aa04b5e0743c038fb686a0c31a2998aaeee2daf2ab9feed485dd78ea9a146903da1795022b35d70
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ng-bank-parser (0.1.4)
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.24)
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.6.1)
31
- mini_portile (0.6.2)
32
- minitest (5.8.0)
33
- netrc (0.10.3)
34
- nokogiri (1.6.6.2)
35
- mini_portile (~> 0.6.0)
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: 1,
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 1 or 0. 1 for when the parsing is succesful and 0 for when it's not. A status of 0 is accompanied with an error message that aims to clarify why it could not parse the file.
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: 0,
58
+ status: 400,
59
59
  message: "RELEVANT ERROR MESSAGE"
60
60
  }
61
61
  ```
@@ -1,6 +1,6 @@
1
1
  module NgBankParser
2
2
  class Banks
3
- $Banks = [{
3
+ BANK_DEFINITIONS = [{
4
4
  key: "gtb",
5
5
  name: "Guaranty Trust Bank",
6
6
  parsers: [{
@@ -114,11 +114,11 @@ module AccessbankPdfHelpers
114
114
 
115
115
 
116
116
  def error(msg)
117
- { status: 0, message: msg }
117
+ { status: 400, message: msg }
118
118
  end
119
119
 
120
120
  def success(data)
121
- { status: 1, data: data }
121
+ { status: 200, data: data }
122
122
  end
123
123
 
124
124
 
@@ -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
- if contains_transactions_table?
33
- extract_transactions(clean(get_raw_transactions))
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] = @@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
- @@transactions << transaction
66
+ arr << transaction
66
67
  else
67
- @@transactions.last[:remarks] += array[0] if @@transactions
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.each do |page|
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: 0,
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: 1,
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 add_to_transactions lines
177
- lines.each do |line|
178
- @@raw_transactions << line.strip.split(/\s\s+/)
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
@@ -50,14 +50,14 @@ module NgBankParser
50
50
 
51
51
  def error_message(text)
52
52
  return {
53
- status: 0,
53
+ status: 400,
54
54
  message: text
55
55
  }
56
56
  end
57
57
 
58
58
  def send_response(data)
59
59
  return {
60
- status: 1,
60
+ status: 200,
61
61
  data: data
62
62
  }
63
63
  end
@@ -57,13 +57,12 @@ module NgBankParser
57
57
  return {
58
58
  status: VALID_ACCOUNT_STATUS,
59
59
  data: {
60
- bank_name: $Banks[1][: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
@@ -2,8 +2,8 @@ module NgBankParser
2
2
  module HbConstants
3
3
  ACCEPTED_FORMATS = ['.pdf']
4
4
 
5
- INVALID_ACCOUNT_STATUS = 0
6
- VALID_ACCOUNT_STATUS = 1
5
+ INVALID_ACCOUNT_STATUS = 400
6
+ VALID_ACCOUNT_STATUS = 200
7
7
 
8
8
  SECOND_PAGE_INDEX = 1
9
9
  DURATION_DATE_LINE_INDEX = 3
@@ -87,7 +87,7 @@ module NgBankParser
87
87
 
88
88
  def return_payload
89
89
  return {
90
- status: 1,
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: 0, message: INVALID_FILE_STRING
104
+ status: 400, message: INVALID_FILE_STRING
105
105
  }
106
106
  end
107
107
 
@@ -1,6 +1,6 @@
1
1
  module NgBankParser
2
2
  class Router
3
- @banks = $Banks
3
+ @banks = NgBankParser::Banks::BANK_DEFINITIONS
4
4
 
5
5
  #this takes our bank parser along with the bank name supplied from the payload so as to compare
6
6
  #and see if the file extension is available for that bank
@@ -1,3 +1,3 @@
1
1
  module NgBankParser
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
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.5
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-09-22 00:00:00.000000000 Z
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.2
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