class LogReader
Reads logs
Attributes
files_read[R]
logs_added[RW]
logs_read[RW]
options[R]
read_log[R]
warnings[R]
Public Class Methods
new(options: {})
click to toggle source
# File lib/log_parser/log_reader.rb, line 10 def initialize(options: {}) @read_log = Hash.new { |h, k| h[k] = [] } @options = options @warnings = [] @logs_read = 0 @logs_added = 0 @files_read = [] @options[:file_list] = [DEFAULT_LOG] if options[:file_list] == [] end
Public Instance Methods
add_file_name(file)
click to toggle source
# File lib/log_parser/log_reader.rb, line 84 def add_file_name(file) format(' - File: %<file>s', file: file) end
add_line_and_file_name(line_number, file)
click to toggle source
# File lib/log_parser/log_reader.rb, line 79 def add_line_and_file_name(line_number, file) format('%<file>s - line %<line>d', file: add_file_name(file), line: line_number) end
add_log(log:, line_number: 1, file:)
click to toggle source
# File lib/log_parser/log_reader.rb, line 38 def add_log(log:, line_number: 1, file:) @logs_read += 1 log_valid = valid_log?(log: log) add_warning_if(type: :log, line_number: line_number, file: file, add_if: !log_valid) return self unless log_valid path, ip_address = log.split(' ') ip_valid = valid_ip?(ip_address: ip_address) path_valid = !options[:path_validation] || valid_path?(path: path) add_warning_if(type: options[:ip_validation], line_number: line_number, file: file, add_if: !ip_valid) add_warning_if(type: :path, line_number: line_number, file: file, add_if: !path_valid) if (ip_valid && path_valid) || !options[:log_remove] @logs_added += 1 read_log[path].push(ip_address) end self end
add_warning_if(type:, line_number:, file:, add_if:)
click to toggle source
# File lib/log_parser/log_reader.rb, line 62 def add_warning_if(type:, line_number:, file:, add_if:) return unless add_if warnings.push(type: type, message: log_warning_message( name: VALIDATION_NAMES[type], line_number: line_number, file: file )) end
load_log(file:)
click to toggle source
# File lib/log_parser/log_reader.rb, line 25 def load_log(file:) begin File.open(file, 'r').each.with_index do |line, i| add_log(log: line, line_number: i + 1, file: file) end @files_read.push(file) rescue warnings.push(type: :file, message: format(' - File not found: %<file>s', file: file)) end self end
load_logs()
click to toggle source
# File lib/log_parser/log_reader.rb, line 20 def load_logs options[:file_list].each { |file| load_log(file: file) } self end
log_warning_message(name:, line_number:, file:)
click to toggle source
# File lib/log_parser/log_reader.rb, line 73 def log_warning_message(name:, line_number:, file:) format(' - Invalid %<name>s%<line_file>s', name: name, line_file: add_line_and_file_name(line_number, file)) end
valid_ip?(ip_address:)
click to toggle source
# File lib/log_parser/log_reader.rb, line 88 def valid_ip?(ip_address:) IpValidator.new(ip_address: ip_address, validation: options[:ip_validation]).valid? end
valid_log?(log:)
click to toggle source
# File lib/log_parser/log_reader.rb, line 93 def valid_log?(log:) log.match(VALID_LOG) end
valid_path?(path:)
click to toggle source
# File lib/log_parser/log_reader.rb, line 97 def valid_path?(path:) PathValidator.new(path: path).valid? end