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