From 87706021c39d13e6a8cc3a63c15a6b7e47bf4877 Mon Sep 17 00:00:00 2001 From: Miguel Nogueira Date: Mon, 20 May 2024 10:08:24 +0100 Subject: [PATCH] feat(date): fix invalid datetime string, add error handling Signed-off-by: Miguel Nogueira --- main.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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