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