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