Sha256: d52caa34cca36b1d5194703e3048c77d9faf834d46fe24aa7c7f8164bb25a20a
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
module Battlenet module Adapter; end module AdapterManager class InvalidAdapter < Exception; end extend self @adapters = { :net_http => "NetHTTP", :typhoeus => "Typhoeus" } def adapters @adapters end def fetch(adapter_name) unless adapters.include? adapter_name raise InvalidAdapter.new("#{adapter_name.to_s} is not a valid adapter") end adapter_class = adapters[adapter_name] adapter = load_adapter adapter_name, adapter_class end private def load_adapter(adapter_name, klass_name) begin klass = Battlenet::Adapter.const_get("#{klass_name}", false) rescue NameError begin adapter_file = "battlenet/adapter/#{adapter_name.to_s}" require adapter_file klass = Battlenet::Adapter.const_get("#{klass_name}", false) rescue LoadError raise InvalidAdapter.new("adapter #{klass_name} does not exist, and file #{adapter_file} does not exist") rescue NameError raise InvalidAdapter.new("expected #{adapter_file} to define Battlenet::Adapter::#{klass_name}") end end return klass.new end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
battlenet-0.1.0 | lib/battlenet/adapter_manager.rb |