class NgBankParser::UbaPdf
Public Class Methods
parse(url, password = nil)
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 11 def parse(url, password = nil) unless ACCEPTED_FORMATS.include? File.extname(url) return invalid_file end file = open(url) if has_encryption? file return invalid_file end set_up_first_page if is_valid_pdf? set_account_details set_transactions return return_payload else return invalid_file end end
Private Class Methods
has_encryption?(path)
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 35 def has_encryption? path begin @reader = PDF::Reader.new(path) false rescue PDF::Reader::EncryptedPDFError true end end
invalid_file()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 102 def invalid_file return { status: 400, message: INVALID_FILE_STRING } end
print_account_details()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 57 def print_account_details puts @bank_name puts @account_name puts @account_number puts @from_date puts @to_date end
return_payload()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 88 def return_payload return { status: 200, data: { bank_name: @bank_name, account_number: @account_number, account_name: @account_name, from_date: @from_date, to_date: @to_date, transactions: @transactions_hashes_array } } end
set_account_details()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 49 def set_account_details set_bank_name set_account_name set_account_number set_dates # print_account_details end
set_account_name()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 69 def set_account_name account_name_line = @first_page_text.lines[ACCOUNT_NAME_LINE_INDEX] @account_name = account_name_line.get_text_between_markers(ACCOUNT_NAME_START_MARKER, ACCOUNT_NAME_END_MARKER) end
set_account_number()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 74 def set_account_number account_number_line = @first_page_text.lines[ACCOUNT_NUMBER_LINE_INDEX] account_number_line_string = account_number_line.remove_white_spaces.downcase! @account_number = account_number_line_string.get_text_between_markers(ACCOUNT_NUMBER_STRING, CURRENCY_STRING).upcase! end
set_bank_name()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 65 def set_bank_name @bank_name = "United Bank for Africa" end
set_dates()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 80 def set_dates date_line = @first_page_text.lines[1] date_line_string = date_line.remove_white_spaces.downcase! @from_date = date_line_string.get_text_between_markers(START_DATE_STRING, END_DATE_STRING).upcase!.convert_to_date @to_date = date_line_string.get_text_after_marker(END_DATE_STRING).upcase!.convert_to_date end
set_up_first_page()
click to toggle source
# File lib/ng-bank-parser/parsers/uba-pdf-parser.rb, line 44 def set_up_first_page @first_page_text = @reader.pages.first.text.remove_empty_lines set_column_positions(@first_page_text.lines[TABLE_HEADER_LINE_INDEX]) end