From 9d678a2e7d44d0d2fea2398c32d48cb5088e86e1 Mon Sep 17 00:00:00 2001 From: Miguel Nogueira Date: Thu, 16 May 2024 11:35:08 +0100 Subject: [PATCH] Add more functions --- README.md | 2 +- main.rb | 34 +++++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 274d83f..9132f8f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Objetivos do programa - - **Objetivo 1**: Número de contactos que um determinado IP realizou + - **Objetivo 1**: ~~Número de contactos que um determinado IP realizou~~ (Feito) - **Objetivo 2**: Quais IPs resultaram no maior número de erros de cliente (400-499) - **Objetivo 3**: Agrupar por tipo de cliente e saber que tipos de clientes contactam mais o site diff --git a/main.rb b/main.rb index 1584644..11869d7 100644 --- a/main.rb +++ b/main.rb @@ -1,15 +1,38 @@ # frozen_string_literal: true +require 'date' + logfile = File.open("teambuilder.pt.log") data = logfile.read lines = data.split("\n") # Gets the IP address from the string +# Note: sometimes the function can fetch the UA version as an IP address def get_line_ip(line) pattern = /\b(?:\d{1,3}\.){3}\d{1,3}\b/ line.match(pattern)[0] if line.match(pattern) end +# Returns the date in the current line +def get_line_date(line) + pattern = /\[(.*?)\]/ + match = line.match(pattern)[0] if line.match(pattern) + + Date.parse(match.gsub("[", "").gsub("]", "")) +end + +def get_line_code(line) + pattern = /\s(\d{3})\s/ + line.match(pattern)[1] if line.match(pattern) +end + +def get_line_ua(line) + pattern = /"([^"]*)"$/ + user_agent = line.match(pattern)[0] if line.match(pattern) + + user_agent.gsub('"', '') +end + # Gets the number of times an IP contacted the site def times_appeared_single(ips, ip_to_check) counter = 0 @@ -21,18 +44,11 @@ def times_appeared_single(ips, ip_to_check) [counter] end -def get_code_by_ip(ip_address) - -end - -def get_user_agent(ip) - -end - ips = [] lines.each do | line | previous_ip = "" ips << get_line_ip(line) + + puts get_line_ua(line) end -puts times_appeared_single(ips, "3.94.209.170")