Sha256: bdaea2b107d01a1c97e252ea1a96bc0ef7968159a946aa388d26543ce3f6a004
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
module RequestLogAnalyzer::Filter # Filter to select or reject a specific field # Options # * <tt>:mode</tt> :reject or :accept. # * <tt>:field</tt> Specific field to accept or reject. # * <tt>:value</tt> Value that the field should match to be accepted or rejected. class Field < Base attr_reader :field, :value, :mode def initialize(file_format, options = {}) super(file_format, options) setup_filter end # Setup mode, field and value. def setup_filter @mode = (@options[:mode] || :accept).to_sym @field = @options[:field].to_sym # Convert the timestamp to the correct formats for quick timestamp comparisons if @options[:value].is_a?(String) && @options[:value][0, 1] == '/' && @options[:value][-1, 1] == '/' @value = Regexp.new(@options[:value][1..-2]) else @value = @options[:value] # TODO: convert value? end end # Keep request if @mode == :select and request has the field and value. # Drop request if @mode == :reject and request has the field and value. # Returns nil otherwise. # <tt>request</tt> Request Object def filter(request) found_field = request.every(@field).any? { |value| @value === value.to_s } return nil if !found_field && @mode == :select return nil if found_field && @mode == :reject request end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
request-log-analyzer-1.13.4 | lib/request_log_analyzer/filter/field.rb |
request-log-analyzer-1.13.3 | lib/request_log_analyzer/filter/field.rb |