Class: BankCredentials::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/bank_credentials/factory.rb

Class Method Summary collapse

Class Method Details

.class_for_type(type) ⇒ Object



24
25
26
27
28
29
# File 'lib/bank_credentials/factory.rb', line 24

def self.class_for_type(type)
  case type
  when 'ebics' then Ebics
  when 'hbci' then Hbci
  end
end

.from_encoded_json(encoded_json) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bank_credentials/factory.rb', line 12

def self.from_encoded_json(encoded_json)
  raise Errors::Invalid if encoded_json.nil?
  raise Errors::Invalid if encoded_json.empty?
  raise Errors::Invalid unless encoded_json.is_a?(String)

  credentials = JSON.parse(Base64.urlsafe_decode64(encoded_json), symbolize_names: true)

  class_for_type(credentials[:type]).new(credentials)
rescue JSON::ParserError, ArgumentError
  raise Errors::Invalid
end

.from_hash(credentials) ⇒ Object

Raises:



5
6
7
8
9
10
# File 'lib/bank_credentials/factory.rb', line 5

def self.from_hash(credentials)
  raise Errors::Invalid unless credentials.is_a?(Hash)
  raise Errors::Invalid unless credentials.key?(:type)

  class_for_type(credentials[:type]).new(credentials)
end