Class Sitealizer::Parser::UserAgent
In: lib/sitealizer/parser.rb
Parent: Object

Methods

Public Class methods

Process the user agent string and returns the user’s browser info as a hash:

  user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5"
  Sitealizer::Parser::UserAgent.browser_info(user_agent)
  => {:type => 'Firefox', :version => '1.5'}

[Source]

# File lib/sitealizer/parser.rb, line 67
      def self.browser_info(user_agent)
        browser = {
          :type => nil,
          :version => nil
        }
        #Internet Exlorer
        if user_agent =~ /MSIE/i && user_agent.scan(/AOL|America Online Browser/i).empty?
          browser[:type] = "MSIE";
          browser[:version] = user_agent.scan(/MSIE ([\d\.]+)/i).to_s
        #Firefox/Firebird/Phoenix
        elsif user_agent =~ /Firefox|Firebird|Phoenix/i
          browser[:type] = "Firefox";
          browser[:version] = user_agent.scan(/[Firefox|Firebird|Phoenix].\/(\d.+)/i).to_s
        #Galeon
        elsif user_agent =~ /Galeon/i
          browser[:type] = "Galeon";
          browser[:version] = user_agent.scan(/Galeon\/([\d\.]+)/i).to_s
        #Safari
        elsif user_agent =~ /Safari/i
          browser[:type] = "Safari";
          browser[:version] = nil
        #Opera
        elsif user_agent =~ /Opera/i
          browser[:type] = "Opera";
          browser[:version] = user_agent.scan(/Opera[ |\/]([\d\.]+)/i).to_s
        #AOL/America Online Browser
        elsif user_agent =~ /AOL|America Online Browser/i
          browser[:type] = "AOL"
          browser[:version] = if user_agent =~ /AOL/i
              user_agent.scan(/AOL[ |\/]([\d.]+)/i).uniq.to_s
            else
              user_agent.scan(/America Online Browser ([\d\.]+)/i).to_s
           end
        #Camino
        elsif user_agent =~ /Camino/i
          browser[:type] = "Camino";
          browser[:version] = user_agent.scan(/Camino\/([\d\.]+)/i).to_s
        #Konqueror
        elsif user_agent =~ /Konqueror/i
          browser[:type] = "Konqueror";
          browser[:version] = user_agent.scan(/Konqueror\/([\d.]+)/i).to_s
        #K-Meleon
        elsif user_agent =~ /K-Meleon/i
          browser[:type] = "K-Meleon";
          browser[:version] = user_agent.scan(/K-Meleon\/([\d.]+)/i).to_s
        #Firefox BonEcho
        elsif user_agent =~ /BonEcho/i
          browser[:type] = "Firefox BonEcho";
          browser[:version] = user_agent.scan(/BonEcho\/([\d.]+)/i).to_s
        #Netscape
        elsif user_agent =~ /Netscape/i
          browser[:type] = "Netscape";
          browser[:version] = user_agent.scan(/Netscape\/([\d.]+)/i).to_s
        #PSP
        elsif user_agent =~ /PlayStation Portable/i
          browser[:type] = "PlayStation Portable (PSP)";
          browser[:version] = user_agent.scan(/PlayStation Portable\); ([\d\.]+)/i).to_s
        #PlayStation 3
        elsif user_agent =~ /PlayStation 3/i
          browser[:type] = "PlayStation 3";
          browser[:version] = user_agent.scan(/PlayStation 3; ([\d\.]+)/i).to_s
        #Lynx
        elsif user_agent =~ /Lynx/i
          browser[:type] = "Lynx";
          browser[:version] = user_agent.scan(/Lynx\/([\d\.]+)/i).to_s
        else
          browser[:type] = "Other";
          browser[:version] = nil
        end
        return browser
      end

Process the user agent string and returns the users’s platform:

  Sitealizer::Parser::UserAgent.get_platform("(Macintosh; U; PPC Mac OS X; en)")
  => "Macintosh"

[Source]

# File lib/sitealizer/parser.rb, line 42
      def self.get_platform(user_agent)
        platform = nil
        if user_agent =~ /Win/i
          platform = "Windows"
        elsif user_agent =~ /Mac/i
          platform = "Macintosh"
        elsif user_agent =~ /Linux/i
          platform = "Linux";
        elsif user_agent =~ /SunOS/i
          platform = "Sun Solaris";
        elsif user_agent =~ /BSD/i
          platform = "FreeBSD";
        else
          platform = "Other"
        end
        return platform
      end

[Validate]