Class: Keycard::InstitutionFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/keycard/institution_finder.rb

Overview

looks up institution ID(s) by IP address

Constant Summary collapse

IDENTITY_ATTRS =
i[dlpsInstitutionId].freeze
INST_QUERY =
"  SELECT inst FROM aa_network WHERE\n          ? >= dlpsAddressStart\n      AND ? <= dlpsAddressEnd\n      AND dlpsAccessSwitch = 'allow'\n      AND dlpsDeleted = 'f'\n      AND inst is not null\nAND inst NOT IN\n    ( SELECT inst FROM aa_network WHERE\n      ? >= dlpsAddressStart\n      AND ? <= dlpsAddressEnd\n      AND dlpsAccessSwitch = 'deny'\n      AND dlpsDeleted = 'f' )\n"

Instance Method Summary collapse

Constructor Details

#initialize(db: Keycard::DB.db) ⇒ InstitutionFinder

Returns a new instance of InstitutionFinder.



24
25
26
27
# 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

Instance Method Details

#attributes_for(request) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
# 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_keysObject



29
30
31
# File 'lib/keycard/institution_finder.rb', line 29

def identity_keys
  IDENTITY_ATTRS
end