Sha256: 8835be120d7bae8201bf52e8b4801be70288dd264729d45e6c6644fffb396cc6

Contents?: true

Size: 900 Bytes

Versions: 1

Compression:

Stored size: 900 Bytes

Contents

require 'sqlite3'
require_relative '../errors/invalid_bank_code_error'
require_relative '../errors/bank_not_found_error'

module SwiftBic
  class BankDb
    def initialize bank_code
      validate_bank_code bank_code
      @bank_data = load_table_row bank_code
      raise BankNotFoundError unless @bank_data
    end

    def bank_name
      @bank_data[1]
    end

    def bic
      @bank_data[2]
    end

    def validate_bank_code bank_code
      if bank_code.length == 8
        return true
      else
        raise InvalidBankCodeError
      end
    end

    private

    def load_table_row bank_code
      begin
        db = SQLite3::Database.open(File.expand_path("../../../db/blz.db", __FILE__))
        row = db.execute("SELECT * FROM blz WHERE blz = '#{bank_code}'")
      rescue SQLite3::Exception => e
        throw e
      ensure
        db.close
      end
      row[0]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ibanizator-0.1.3 lib/swift_bic/bank_db.rb