houdini/gems/bess/lib/houdini/payment_provider/registry.rb
2020-06-15 10:26:57 -05:00

26 lines
No EOL
853 B
Ruby

# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
class Houdini::PaymentProvider::Registry
def initialize(configurations)
@configurations = configurations.deep_dup
@providers = {}
end
def build_all
configurations.keys.each do |key|
resolve(key)
configurations[key] = Houdini::PaymentProvider.build(key)
end
configurations
end
private
attr_reader :configurations, :providers
def resolve(class_name)
require "houdini/payment_provider/#{class_name.to_s.underscore}_provider"
Houdini::PaymentProvider.const_get(:"#{class_name.to_s.camelize}Provider")
rescue LoadError
raise "Missing provider for #{class_name.inspect}"
end
end