Sha256: dbd908b3936c5d085e3c2f7e040f8328a9d58e7adeb0eef6b4e30119d8728842

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

module PeriscopeRails
  class Config
    VALID_MATCHTYPES = ['fuzzy', 'exact']
    
    @@password = nil
    @@filter = nil
    @@filter_matchtype = 'fuzzy'
    @@active_record = nil 
    @@db_username = nil
    @@db_password = nil

    @@block_expensive_queries = true
    @@max_rows = 2000
    @@max_size = @@max_rows * 500

    def self.set_password(password)
      @@password = password
    end
    
    def self.set_filter(options)
      @@filter = options[:filter] if options[:filter] and options[:filter].class == Array
      @@filter_matchtype = options[:matchtype] if options.has_key?(:matchtype) and VALID_MATCHTYPES.include?(options[:matchtype])
    end

    def self.use_db_credentials(options)
      @@db_username = options[:username] if options[:username] and options[:username].class == String
      @@db_password = options[:password] if options[:password] and options[:password].class == String
    end
    
    def self.check_password(password)
      return @@password == password
    end
    
    def self.matches_filter(text)
      filter = @@filter || Rails.application.config.filter_parameters
      filter.each do |filtered_word|
        if (@@filter_matchtype == 'fuzzy' and text.include?(filtered_word.to_s)) or
           (@@filter_matchtype == 'exact' and text == filtered_word.to_s)
          return true
        end
      end
      return false
    end
  
    def self.get_active_record
      return ActiveRecord::Base if @@db_username.nil?
      return @@active_record unless @@active_record.nil?
      @@active_record = Class.new(ActiveRecord::Base)
      config = ActiveRecord::Base.connection_config.merge({:username => @@db_username, :password => @@db_password})
      @@active_record.establish_connection(config)
      return @@active_record
    end

    def self.block_expensive_queries?; return @@block_expensive_queries; end
    def self.max_rows; return @@max_rows; end
    def self.max_size; return @@max_size; end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
periscope_rails-0.0.10 lib/periscope_rails/config.rb