Class: RoutingNumber

Inherits:
Object
  • Object
show all
Defined in:
lib/bank_routing/storage/base.rb,
lib/bank_routing/storage/redis.rb,
lib/bank_routing/storage/memory.rb,
lib/bank_routing/routing_numbers.rb

Defined Under Namespace

Classes: InvalidStore, MemStore, RedisStore, StoreBase

Constant Summary collapse

Stores =
{}
FORMAT =
[
	[:route,9],
	[:office_code,1],
	[:servicing_frb_number,9],
	[:record_type_code,1],
	[:change_date,6],
	[:new_routing_number,9],
	[:name,36],
	[:address,36],
	[:city,20],
	[:state,2],
	[:zip,5],
	[:zip_ext,4],
	[:phone_area,3],
	[:phone_prefix,3],
	[:phone_suffix,4],
	[:institution_status_code,1],
	[:data_view_code,1],
	[:filler,5]
].freeze
DefaultOptions =
{
	store_in: :memory,
	routing_data_url: "https://www.fededirectory.frb.org/FedACHdir.txt",
	routing_data_file: File.expand_path(File.dirname(__FILE__)) + "/../../data/FedACHdir.txt",
	fetch_fed_data: false,
	store_opts: {},
	mapping_file: File.expand_path(File.dirname(__FILE__) + "/../../data/mappings.json"),
	metadata_file: File.expand_path(File.dirname(__FILE__) + "/../../data/metadata.json")
}.freeze

Class Method Summary collapse

Class Method Details

.fetch_fresh_data!(fetch = true) ⇒ Object



88
89
90
91
# File 'lib/bank_routing/routing_numbers.rb', line 88

def fetch_fresh_data!( fetch=true )
	options[ :fetch_fed_data ] = fetch
	load_routing_numbers( get_raw_data )
end

.get(num) ⇒ Object Also known as: [], find



61
62
63
64
65
66
67
68
# File 'lib/bank_routing/routing_numbers.rb', line 61

def get(num)
	init!(options)
	if cnt = store.get(num.to_s)
		cnt
	else
		nil
	end
end

.init!(opts = {}) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/bank_routing/routing_numbers.rb', line 43

def init!(opts = {})
	return if @initted
	@options = options.merge(opts)
	if options[:store_in]
		store_in options[:store_in], options[:store_opts]
	end
	unless store.loaded?
		log.info "Loading routing numbers..."
		load_routing_numbers
		log.info "Done loading routing numbers."
	end
	@initted = true
end

.options=(opts) ⇒ Object



57
58
59
# File 'lib/bank_routing/routing_numbers.rb', line 57

def options=(opts)
	@options = options.merge(opts)
end

.reconnect!Object



83
84
85
86
# File 'lib/bank_routing/routing_numbers.rb', line 83

def reconnect!
	log.info "Reconnecting!"
	store.reconnect!
end

.store_in(name, opts = {}) ⇒ Object

Raises:



72
73
74
75
76
77
78
79
80
81
# File 'lib/bank_routing/routing_numbers.rb', line 72

def store_in(name, opts={})
	raise InvalidStore unless s_cls = Stores[name.to_sym]
	return if @store.is_a?(s_cls)
	@store.shutdown! if @store
	@store = s_cls.new(opts.merge(logger: log))
	@initted = false
	options[:store_in] = name.to_sym
	options[:store_opts] = opts
	init!
end