Class: OmniAuth::Polaris::Adaptor
- Inherits:
-
Object
- Object
- OmniAuth::Polaris::Adaptor
- Defined in:
- lib/omniauth/polaris/adaptor.rb
Constant Summary collapse
- REQUIRED_ADAPTER_CONFIG_KEYS =
%i[access_id access_key method http_uri].freeze
- BASIC_USER_DATA_KEYS =
%w[NameFirst NameLast NameMiddle PhoneNumber EmailAddress].freeze
- METHOD =
{ POST: :GET }.freeze
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Class Method Summary collapse
Instance Method Summary collapse
- #authenticate_patron(pin:, barcode:) ⇒ Object
-
#initialize(configuration = {}) ⇒ Adaptor
constructor
A new instance of Adaptor.
Constructor Details
#initialize(configuration = {}) ⇒ Adaptor
Returns a new instance of Adaptor.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/omniauth/polaris/adaptor.rb', line 22 def initialize(configuration = {}) self.class.validate!(configuration) @configuration = configuration.dup @logger = @configuration.delete(:logger) REQUIRED_ADAPTER_CONFIG_KEYS.each do |name| instance_variable_set("@#{name}", @configuration[name]) end @config = { http_uri: @http_uri, method: @method, access_key: @access_key, access_id: @access_id } ensure_method!(@method) @polaris_method = METHOD[@method.to_s.to_sym] end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
10 11 12 |
# File 'lib/omniauth/polaris/adaptor.rb', line 10 def config @config end |
Class Method Details
.validate!(configuration = {}) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/omniauth/polaris/adaptor.rb', line 12 def self.validate!(configuration = {}) = REQUIRED_ADAPTER_CONFIG_KEYS.each_with_object([]) do |name, msg| next msg if configuration[name].present? msg << name end raise Polaris::ConfigurationError, "#{.join(' ,')} MUST be provided" unless .blank? end |
Instance Method Details
#authenticate_patron(pin:, barcode:) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/omniauth/polaris/adaptor.rb', line 44 def authenticate_patron(pin:, barcode:) # According to the polaris api docs "Date must be within +/- 30 minutes of current time or request will fail" http_date = 15.minutes.from_now.in_time_zone('GMT').strftime('%a, %d %b %Y %H:%M:%S %Z') # Authorization hash component = (pin, , http_date) return if .blank? # Details hash component details_hash = details_response(pin, , http_date) return if details_hash.blank? || details_hash.dig('PatronBasicDataGetResult', 'PatronBasicData').blank? patron_user_hash = ['PatronValidateResult'].dup patron_user_hash.merge(details_hash.dig('PatronBasicDataGetResult', 'PatronBasicData').slice(*BASIC_USER_DATA_KEYS)) end |