module Cardflex class Configuration API_VERSION = 3 SERVER = "secure.cardflexonline.com" PORT = 443 class << self attr_writer :logger, :api_key end attr_reader :api_key def self.expectant_reader(*attributes) attributes.each do |attribute| (class << self; self; end).send(:define_method, attribute) do value = instance_variable_get("@#{attribute}") raise ConfigurationError.new(attribute.to_s, "needs to be set") unless value value end end end expectant_reader :api_key, :environment def initialize(options={}) [:environment, :api_key, :logger].each do |attr| instance_variable_set("@#{attr}", options[attr]) end end def self.environment=(env) unless [:development, :test, :production].include?(env) raise ArgumentError, "#{env} is not a valid environment" end @environment = env end def self.gateway Cardflex::Gateway.new(instantiate) end def self.instantiate config = new( :environment => @environment, :logger => logger, :api_key => api_key ) end def ca_file File.expand_path(File.join(File.dirname(__FILE__), "..", "ssl", "ca-certificates.ca.crt")) end def http Http.new(self) end def three_step_path "/api/v2/three-step" end def server SERVER end def protocol "https" end def port PORT end def ssl? true end def api_version API_VERSION end def logger @logger ||= self.class._default_logger end def self.logger @logger ||= _default_logger end def self._default_logger logger = Logger.new(STDOUT) logger.level = Logger::INFO logger end end end