lib/brazil_cep/adapters.rb in brazil-cep-0.1.0 vs lib/brazil_cep/adapters.rb in brazil-cep-0.2.0

- old
+ new

@@ -2,21 +2,44 @@ module Brazil module Cep # Adapters class namespace module Adapters + # autoload default adapters autoload :Base, "brazil_cep/adapters/base" autoload :Viacep, "brazil_cep/adapters/viacep" autoload :Postmon, "brazil_cep/adapters/postmon" autoload :RepublicaVirtual, "brazil_cep/adapters/republica_virtual" # list of provider keys and classes PROVIDERS = { viacep: Viacep, postmon: Postmon, republica_virtual: RepublicaVirtual - }.freeze + } + private_constant :PROVIDERS + + # get providers + # @return [Hash] providers + def self.providers + PROVIDERS + end + + # register a provider + # + # @example + # Brazil::Cep::Adapters.register(:custom_provider, Brazil::Cep::Adapters::CustomProvider) + # + # @param provider_key [Symbol] provider key + # @param provider_class [Class] provider class + def self.register(provider_key, provider_class) + PROVIDERS[provider_key] = provider_class + end + + # get provider instance + # @param provider [Symbol] provider key + # @return [Base] provider instance def self.get(provider = :viacep) PROVIDERS[provider].new end end end