ng-bank-parser 0.1.5 → 0.1.6

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: 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