class Keycard::InstitutionFinder
looks up institution ID(s) by IP address
Constants
- IDENTITY_ATTRS
- INST_QUERY
Attributes
stmt[R]
Public Class Methods
new(db: Keycard::DB.db)
click to toggle source
# File lib/keycard/institution_finder.rb, line 24 def initialize(db: Keycard::DB.db) @db = db @stmt = @db[INST_QUERY, *[:$client_ip] * 4].prepare(:select, :unused) end
Public Instance Methods
attributes_for(request)
click to toggle source
# File lib/keycard/institution_finder.rb, line 33 def attributes_for(request) return {} unless (numeric_ip = numeric_ip(request.client_ip)) insts = insts_for_ip(numeric_ip) if !insts.empty? { dlpsInstitutionId: insts } else {} end end
identity_keys()
click to toggle source
# File lib/keycard/institution_finder.rb, line 29 def identity_keys IDENTITY_ATTRS end
Private Instance Methods
insts_for_ip(numeric_ip)
click to toggle source
# File lib/keycard/institution_finder.rb, line 49 def insts_for_ip(numeric_ip) stmt.call(client_ip: numeric_ip).map { |row| row[:inst] } end
numeric_ip(dotted_ip)
click to toggle source
# File lib/keycard/institution_finder.rb, line 53 def numeric_ip(dotted_ip) return unless dotted_ip begin IPAddr.new(dotted_ip).to_i rescue IPAddr::InvalidAddressError nil end end