module Biro class BaseRequest class AuthenticationError < StandardError; end class DocumentNotFoundError < StandardError; end def production_url raise NotImplementedError.new('production_url must be implemented') end def development_url production_url end def url Biro.development? ? development_url : production_url end def required_params [] end def initialize(params) required_params.each do |param| raise ArgumentError.new("Missing required parameter '#{param}' for #{self.class.name}") unless params.has_key?(param) instance_variable_set("@#{param}", params[param]) end end end end