class BankCredentials::Factory

Public Class Methods

class_for_type(type) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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