Sha256: c1850aa9b85e45d06b12e8a6ec618d29b2b9152b3afc7d0174c86ac86f762433

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

require 'pdf-reader'
require 'open-uri'
require_relative 'accessbank-pdf-parser/helpers'
require_relative '../pdf-unlocker.rb'

module NgBankParser
	class AccessbankPdf
    extend AccessbankPdfHelpers

		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



    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


    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

	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ng-bank-parser-0.1.7 lib/ng-bank-parser/parsers/accessbank-pdf-parser.rb
ng-bank-parser-0.1.6 lib/ng-bank-parser/parsers/accessbank-pdf-parser.rb
ng-bank-parser-0.1.5 lib/ng-bank-parser/parsers/accessbank-pdf-parser.rb