class Razorpay::IFSC::IFSC

Primary class for handling IFSC Codes

Constants

API

Attributes

address[R]
bank[R]
branch[R]
city[R]
contact[R]
district[R]
ifsc[R]
state[R]

Public Class Methods

new(ifsc) click to toggle source
# File src/ruby/ifsc.rb, line 16
def initialize(ifsc)
  @ifsc = ifsc
end

Private Class Methods

bank_name_data() click to toggle source
# File src/ruby/ifsc.rb, line 114
def bank_name_data
  @bank_name_data ||= parse_json_file 'banknames'
end
bank_name_for(code) click to toggle source
# File src/ruby/ifsc.rb, line 82
def bank_name_for(code)
  sublet_code = sublet_data[code]
  regular_code = code[0..3].upcase
  custom_name = bank_name_via_custom_sublet code
  custom_name || bank_name_data[sublet_code || regular_code]
end
bank_name_via_custom_sublet(code) click to toggle source

See getCustomSubletName in IFSC.php

# File src/ruby/ifsc.rb, line 92
def bank_name_via_custom_sublet(code)
  custom_sublet_data.each do |prefix, value|
    if prefix == code[0..prefix.length - 1]
      if value.length == 4
        return bank_name_data[value]
      else
        return value
      end
    end
  end
  return nil
end
custom_sublet_data() click to toggle source
# File src/ruby/ifsc.rb, line 122
def custom_sublet_data
  @custom_sublet_data ||= parse_json_file 'custom-sublets'
end
data() click to toggle source
# File src/ruby/ifsc.rb, line 110
def data
  @data ||= parse_json_file 'IFSC'
end
find(ifsc) click to toggle source
# File src/ruby/ifsc.rb, line 57
def find(ifsc)
  new(ifsc).get
end
parse_json_file(file) click to toggle source
# File src/ruby/ifsc.rb, line 105
def parse_json_file(file)
  file = "../#{file}.json"
  JSON.parse(File.read(File.join(__dir__, file)))
end
sublet_data() click to toggle source
# File src/ruby/ifsc.rb, line 118
def sublet_data
  @sublet_data ||= parse_json_file 'sublet'
end
valid?(code) click to toggle source
# File src/ruby/ifsc.rb, line 66
def valid?(code)
  return false unless code.size == 11
  return false unless code[4] == '0'

  bank_code = code[0..3].upcase
  branch_code = code[5..-1].upcase

  return false unless data.key? bank_code

  if branch_code =~ /^(\d)+$/
    data[bank_code].include? branch_code.to_i
  else
    data[bank_code].include? branch_code
  end
end
validate!(code) click to toggle source
# File src/ruby/ifsc.rb, line 61
def validate!(code)
  raise InvalidCodeError unless valid? code
  true
end

Public Instance Methods

bank_name() click to toggle source

Returns the bank name taking sublet branches into consideration. Returns the normal branch name otherwise

# File src/ruby/ifsc.rb, line 40
def bank_name
  @bank = self.class.bank_name_for @ifsc
end
get() click to toggle source
# File src/ruby/ifsc.rb, line 24
def get
  @bank = api_data['BANK']
  @branch = api_data['BRANCH']
  @address = api_data['ADDRESS']
  @contact = api_data['CONTACT']
  @city = api_data['CITY']
  @district = api_data['DISTRICT']
  @state = api_data['STATE']
  @bankcode = api_data['BANKCODE']
  @valid = true
  self
end
valid?() click to toggle source
# File src/ruby/ifsc.rb, line 20
def valid?
  @valid ||= self.class.valid? ifsc
end

Private Instance Methods

api_data() click to toggle source
# File src/ruby/ifsc.rb, line 46
def api_data
  @api_data ||= begin
    response = HTTParty.get(URI.join(API, ifsc))
    raise InvalidCodeError, 'IFSC API returned 404' if response.code == 404
    JSON.parse(response.body)
  end
rescue HTTParty::Error, SocketError => e
  raise ServerError, e.message
end