class Record

Constants

DATA_TYPE
REGEX_BOT

Attributes

apptime[RW]
cache[RW]
forwardedfor[RW]
forwardedproto[RW]
host[RW]
method[RW]
params[R]
referer[RW]
req[RW]
reqtime[RW]
request_length[RW]
runtime[RW]
size[RW]
status[RW]
time[RW]
ua[RW]
uri[RW]
user[RW]
vhost[RW]

Public Class Methods

new(params) click to toggle source
# File lib/log_analysis/model/record.rb, line 31
def initialize(params)
  @params = params
  record_params.keys.each { |key| instance_variable_set("@#{key}", record_params[key]) }
end

Public Instance Methods

method_get?() click to toggle source
# File lib/log_analysis/model/record.rb, line 40
def method_get?
  method == 'GET'
end
robot?() click to toggle source
# File lib/log_analysis/model/record.rb, line 50
def robot?
  ua.bot? || ua.to_s.match?(REGEX_BOT)
end
status_200?() click to toggle source
# File lib/log_analysis/model/record.rb, line 36
def status_200?
  status == 200
end
uri_without_data() click to toggle source
# File lib/log_analysis/model/record.rb, line 44
def uri_without_data
  return false if uri.nil? || uri.end_with?(*DATA_TYPE)

  true
end

Private Instance Methods

record_params() click to toggle source
# File lib/log_analysis/model/record.rb, line 56
def record_params
  {}.tap do |p|
    p['time']           = Time.parse(@params['time'].split.first.sub(/:/, ' ')) || nil
    p['host']           = IPAddr.new(@params['host'])
    p['status']         = @params['status'].to_i || 0
    p['size']           = @params['size'].to_i || 0
    p['request_length'] = @params['request_length'].to_i || 0
    p['req']            = validate_string(@params['req'])
    p['method']         = validate_string(@params['method'])
    p['uri']            = validate_string(@params['uri'])
    p['referer']        = validate_string(@params['referer'])
    p['ua']             = UserAgent.parse(@params['ua'])
    p['reqtime']        = @params['reqtime'].to_f
    p['runtime']        = @params['runtime'].to_f
    p['apptime']        = @params['apptime'].to_f
    p['cache']          = validate_string(@params['cache'])
    p['vhost']          = validate_string(@params['vhost'])
    p['user']           = @params['user'] || nil
    p['forwardedfor']   = validate_string(@params['forwardedfor'])
    p['forwardedproto'] = validate_string(@params['forwardedproto'])
  end
rescue IPAddr::InvalidAddressError => e
  puts e
end
validate_string(value) click to toggle source
# File lib/log_analysis/model/record.rb, line 81
def validate_string(value)
  value == '-' ? nil : value
end