Guest User

Untitled

a guest
Apr 19th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. require 'rubygems'
  2. require 'cgi'
  3. require 'fastercsv'
  4.  
  5. class LogRow
  6.  
  7. attr_accessor :row
  8.  
  9. def ip_address
  10. @row[0]
  11. end
  12.  
  13. def time_stamp
  14. @row[1]
  15. end
  16.  
  17. def request
  18. @row[2].split(' ')
  19. end
  20.  
  21. def user_agent
  22. @row[3]
  23. end
  24.  
  25. def initialize(row)
  26. @row = row
  27. end
  28.  
  29. #methods
  30.  
  31. def uri
  32. CGI.unescape(self.request[1])
  33. end
  34.  
  35. def has_valid_email?
  36. self.uri =~ /e=((?#user_name)[^@\s]+)@((?#domain_name)(?:[-a-z0-9]+\.)+[a-z]{2,})/i
  37. end
  38.  
  39.  
  40.  
  41. end
  42.  
  43. # minor issue, but typically ruby uses underscore for variables, as in:
  44. # log_rows = Array.new
  45.  
  46. # also, you can use even simpler syntax of:
  47. # log_rows = []
  48.  
  49. class Log_Rows
  50.  
  51. attr_accessor :file_path
  52. attr_reader :invalid_rows, :valid_rows
  53.  
  54. def initialize(file_path)
  55. @file_path = file_path
  56. @valid_rows = populate_valid_rows
  57. @invalid_rows = populate_invalid_rows
  58. end
  59.  
  60. def populate_invalid_rows
  61. l = []
  62. FasterCSV.foreach(self.file_path) do |row|
  63.  
  64. new_row = LogRow.new(row)
  65. if new_row.has_valid_email? == nil then
  66. l.push(new_row)
  67. end
  68. end
  69. return l
  70. end
  71.  
  72. def populate_valid_rows
  73. l = []
  74. FasterCSV.foreach(self.file_path) do |row|
  75. new_row = LogRow.new(row)
  76. if new_row.has_valid_email? then
  77. l.push(new_row)
  78. end
  79. end
  80. return l
  81. end
  82. end
  83.  
  84.  
  85.  
  86.  
  87. log = Log_Rows.new("/Users/andrewblass/Documents/Ruby/creature_log.csv")
  88.  
  89. log.invalid_rows.each do |row|
  90. puts row.user_agent
  91. end
Add Comment
Please, Sign In to add comment