diff --git a/main.rb b/main.rb index 8909bb9..5601f71 100644 --- a/main.rb +++ b/main.rb @@ -42,8 +42,11 @@ end # Returns the date in the current line def get_line_date(line) pattern = /\[(.*?)\]/ - match = line.match(pattern)[0] if line.match(pattern) - + if line.match(pattern) + match = line.match(pattern)[0] + else + raise StandardError("Invalid datetime data detected!") + end # [12/Apr/2023:13:56:41 +0100] -> 12/Apr/2023:13:56:41 +0100 -> Apr/2023 Date.parse(match.gsub('[', '').gsub(']', '')).strftime('%b/%Y') end @@ -110,7 +113,12 @@ lines.each do |line| ip = get_line_ip(line).to_s code = get_line_code(line) ua = get_line_ua(line) - date = get_line_date(line) + + begin + date = get_line_date(line) + rescue StandardError + date = 'N/A' + end if is_client_err?(code.to_i) if client_errors[ip] @@ -153,7 +161,7 @@ end monthly_visits.each do |ip, visits| puts "IP #{ip} had the following visits:" visits.each do |date, count| - puts " #{date}: #{count} visits" + puts "#{date}: #{count} visits" end end