class NgBankParser::AccessbankPdf

Public Class Methods

open_pdf(path, password) click to toggle source
# File lib/ng-bank-parser/parsers/accessbank-pdf-parser.rb, line 34
def self.open_pdf(path, password)
  begin
    file =  open(path)
    @pdf = PDF::Reader.new(file)
  rescue PDF::Reader::EncryptedPDFError
    if password
      return unlock_pdf(path, password)
    else
      return nil
    end
  rescue
    return nil
  end
end
parse(path, password=nil) click to toggle source
# File lib/ng-bank-parser/parsers/accessbank-pdf-parser.rb, line 10
            def self.parse(path, password=nil)

  unless File.extname(path) == '.pdf'
    return error('This file format is not supported yet. Please try uploading a pdf')
  end

  @pdf = open_pdf(path, password)

  if @pdf
    pdf_as_array = pdf_to_a(@pdf)

    unless has_valid_details?(pdf_as_array)
      return error("Couldn't fetch account details from pdf")
    end

    response =  get_details(pdf_as_array)
    return success(response)
  else
    return error("Couldn't open the pdf file passed")
  end
end
unlock_pdf(path, password) click to toggle source
# File lib/ng-bank-parser/parsers/accessbank-pdf-parser.rb, line 50
def self.unlock_pdf(path, password)
    unlocker = PDFUnlocker.new
    response = unlocker.unlock(path, password)

    return nil unless response

    if response.include? 'Unlock Failed'
      return nil
    else
      temp = StringIO.new
      temp.write(response)
      return PDF::Reader.new(temp)
    end
end