Double Agent

double_agent is a library for parsing browser and operating system info out of user agent strings. It is designed for parsing large sets for review or analysis.

NOTE Support for Ruby 1.8 was dropped after version 0.2.3.

Installation

[sudo] gem install double_agent
# Or add "double_agent" to your Gemfile

Read the full documentation at jordanhollinger.com/docs/double_agent/

Parser

user_agent = DoubleAgent.parse("Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19")

user_agent.browser
=> "Chrome 18"

user_agent.browser_name
=> "Chrome"

user_agent.browser_version
=> "18"

user_agent.browser_family
=> "Chromium"

user_agent.os
=> "Ubuntu"

user_agent.os_family
=> "GNU/Linux"

user_agent.mobile?
=> false

# Or

DoubleAgent.browser("Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19")
=> "Chrome 18"

See the DoubleAgent module for more info.

Resources

DoubleAgent::Resource is a mix-in for objects with a user_agent method. It gives that class’s objects all of the above methods and more.

class Login
  include DoubleAgent::Resource

  def user_agent
    #returns the user agent string the user logged in with
  end
end

login = Login.find(76)

login.browser
=> "Firefox 4"

login.os_family
=> "OS X"

See the DoubleAgent::Resource module for more info.

Mixing into third-party code

If you want to mix DoubleAgent::Resource into some third-party code, you may find this helpful:

DoubleAgent.resource SomeHttpLogParser::LogEntry

If SomeHttpLogParser::LogEntry doesn’t already have a user_agent method, do this:

DoubleAgent.resource SomeHttpLogParser::LogEntry do
  # some code to return the user agent string
end

Where did stats and logs go?

As of version 1.0.0, double_agent underwent a downsizing. Stats were dropped and moved to their own more generic gem called Graphene. More info at github.com/jhollinger/graphene. Logs were also dropped; there are several HTTP log parsers for Ruby, including http-log-parser and Beaver.

License

Copyright 2011 Jordan Hollinger

Licensed under the Apache License