module NginxTail::HttpReferer

Constants

UNKNOWN_REFERER
to easily identify external referers, for filtering and formatting purposes

 e.g. Regexp.compile(‘^http(s)?://(www.)?MY_WEBSITE_NAME.com’)

Public Class Methods

add_internal_referer(internal_referer) click to toggle source
# File lib/ntail/http_referer.rb, line 29
def self.add_internal_referer(internal_referer)
  raise "Cannot add unkown HTTP referer" if self.unknown_referer? internal_referer
  (@@internal_referers << internal_referer).uniq!
end
external_referer?(http_referer) click to toggle source
# File lib/ntail/http_referer.rb, line 42
def self.external_referer?(http_referer)
  !self.unknown_referer?(http_referer) && !self.internal_referer?(http_referer)
end
internal_referer?(http_referer) click to toggle source
# File lib/ntail/http_referer.rb, line 38
def self.internal_referer?(http_referer)
  !self.unknown_referer?(http_referer) && !@@internal_referers.detect { |referer| referer.match(http_referer) }.nil?
end
internal_referers() click to toggle source

mainly (solely?) for testing purposes…

# File lib/ntail/http_referer.rb, line 25
def self.internal_referers()
  @@internal_referers.dup
end
reset_internal_referers() click to toggle source

mainly (solely?) for testing purposes…

# File lib/ntail/http_referer.rb, line 20
def self.reset_internal_referers()
  while !@@internal_referers.empty? ; @@internal_referers.pop ; end
end
to_referer_s(http_referer) click to toggle source
# File lib/ntail/http_referer.rb, line 46
def self.to_referer_s(http_referer)
  if self.unknown_referer? http_referer
    http_referer
  else begin
      # try to parse it as a URI, but with default value if un-parsable
      URI.parse(http_referer).host || http_referer
    rescue URI::InvalidURIError
      http_referer
    end
  end
end
unknown_referer?(http_referer) click to toggle source
# File lib/ntail/http_referer.rb, line 34
def self.unknown_referer?(http_referer)
  http_referer == UNKNOWN_REFERER
end

Public Instance Methods

external_referer?() click to toggle source
# File lib/ntail/http_referer.rb, line 72
def external_referer?
  self.class.external_referer?(self.http_referer)
end
internal_referer?() click to toggle source
# File lib/ntail/http_referer.rb, line 68
def internal_referer?
  self.class.internal_referer?(self.http_referer)
end
to_referer_s() click to toggle source
# File lib/ntail/http_referer.rb, line 76
def to_referer_s
  self.class.to_referer_s(self.http_referer)
end
unknown_referer?() click to toggle source
# File lib/ntail/http_referer.rb, line 64
def unknown_referer?
  self.class.unknown_referer?(self.http_referer)
end