agent_orange 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/README.rdoc +2 -1
- data/lib/agent_orange/browser.rb +10 -1
- data/lib/agent_orange/device.rb +21 -1
- data/lib/agent_orange/engine.rb +11 -1
- data/lib/agent_orange/operating_system.rb +9 -1
- data/lib/agent_orange/platform.rb +9 -1
- data/lib/agent_orange/user_agent.rb +10 -0
- data/lib/agent_orange/version.rb +13 -2
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -116,7 +116,7 @@ If you're going to use it with Rails then add the gem to your Gemfile.
|
|
116
116
|
|
117
117
|
== General Class Definition
|
118
118
|
|
119
|
-
This is not up to date or a reflection of the actual class structure. This will be updated eventually.
|
119
|
+
This is not up to date or a reflection of the actual class structure. This will be updated eventually. See http://rubydoc.info/gems/agent_orange/frames for more detailed docs.
|
120
120
|
|
121
121
|
AgentOrange::UserAgent
|
122
122
|
device
|
@@ -165,6 +165,7 @@ A warm thank you to all contributors to the project, who have put effort and tim
|
|
165
165
|
* Alexander Rozumiy (@brain-geek) - Rspec testing for 1.9, updated travis-ci config, updated useragents to test against.
|
166
166
|
* Joe Lencioni (@lencioni) - Improved bot detection.
|
167
167
|
* Todd Huss (@thuss) of Two Bit Labs (@twobitlabs) - Google Mobile crawler detection as mobile and bot.
|
168
|
+
* Aidan Feldman (@afeld) - Initial YARD documentation, and minor fix.
|
168
169
|
|
169
170
|
== License
|
170
171
|
|
data/lib/agent_orange/browser.rb
CHANGED
@@ -3,7 +3,15 @@ require 'agent_orange/version'
|
|
3
3
|
|
4
4
|
module AgentOrange
|
5
5
|
class Browser < Base
|
6
|
-
|
6
|
+
# @return [Symbol] one of the keys from {BROWSERS}
|
7
|
+
attr_accessor :type
|
8
|
+
|
9
|
+
# @return [String] one of the values from {BROWSERS}
|
10
|
+
attr_accessor :name
|
11
|
+
|
12
|
+
# @return [AgentOrange::Version]
|
13
|
+
attr_accessor :version
|
14
|
+
|
7
15
|
attr_accessor :security
|
8
16
|
|
9
17
|
BROWSERS = {
|
@@ -63,6 +71,7 @@ module AgentOrange
|
|
63
71
|
AgentOrange.debug "", 2
|
64
72
|
end
|
65
73
|
|
74
|
+
# @return {String}
|
66
75
|
def to_s
|
67
76
|
[self.name, self.version].compact.join(' ')
|
68
77
|
end
|
data/lib/agent_orange/device.rb
CHANGED
@@ -6,9 +6,25 @@ require 'agent_orange/version'
|
|
6
6
|
|
7
7
|
module AgentOrange
|
8
8
|
class Device < Base
|
9
|
-
|
9
|
+
# @return [Symbol] one of the keys from {DEVICES}
|
10
|
+
attr_accessor :type
|
11
|
+
|
12
|
+
# @return [String]
|
13
|
+
attr_accessor :name
|
14
|
+
|
15
|
+
# @return [AgentOrange::Version]
|
16
|
+
attr_accessor :version
|
17
|
+
|
18
|
+
# @return [Boolean]
|
19
|
+
attr_accessor :bot
|
20
|
+
|
21
|
+
# @return [AgentOrange::Platform]
|
10
22
|
attr_accessor :platform
|
23
|
+
|
24
|
+
# @return [AgentOrange::OperatingSystem]
|
11
25
|
attr_accessor :operating_system
|
26
|
+
|
27
|
+
# @return [AgentOrange::Engine]
|
12
28
|
attr_accessor :engine
|
13
29
|
|
14
30
|
DEVICES = {
|
@@ -59,6 +75,7 @@ module AgentOrange
|
|
59
75
|
AgentOrange.debug "", 2
|
60
76
|
end
|
61
77
|
|
78
|
+
# @return [Boolean]
|
62
79
|
def is_computer?(name=nil)
|
63
80
|
if name
|
64
81
|
case name
|
@@ -72,6 +89,7 @@ module AgentOrange
|
|
72
89
|
end
|
73
90
|
end
|
74
91
|
|
92
|
+
# @return [Boolean]
|
75
93
|
def is_mobile?(name=nil)
|
76
94
|
if !name.nil? && !self.platform.name.nil?
|
77
95
|
case name
|
@@ -85,6 +103,7 @@ module AgentOrange
|
|
85
103
|
end
|
86
104
|
end
|
87
105
|
|
106
|
+
# @return [Boolean]
|
88
107
|
def is_bot?(name=nil)
|
89
108
|
if name
|
90
109
|
case name
|
@@ -98,6 +117,7 @@ module AgentOrange
|
|
98
117
|
end
|
99
118
|
end
|
100
119
|
|
120
|
+
# @return [String]
|
101
121
|
def to_s
|
102
122
|
[self.name, self.version].compact.join(' ')
|
103
123
|
end
|
data/lib/agent_orange/engine.rb
CHANGED
@@ -5,7 +5,16 @@ require 'pp'
|
|
5
5
|
|
6
6
|
module AgentOrange
|
7
7
|
class Engine < Base
|
8
|
-
|
8
|
+
# @return [Symbol] one of the keys from {ENGINES}
|
9
|
+
attr_accessor :type
|
10
|
+
|
11
|
+
# @return [String] one of the values from {ENGINES}
|
12
|
+
attr_accessor :name
|
13
|
+
|
14
|
+
# @return [AgentOrange::Version]
|
15
|
+
attr_accessor :version
|
16
|
+
|
17
|
+
# @return [AgentOrange::Browser]
|
9
18
|
attr_accessor :browser
|
10
19
|
|
11
20
|
ENGINES = {
|
@@ -58,6 +67,7 @@ module AgentOrange
|
|
58
67
|
AgentOrange.debug "", 2
|
59
68
|
end
|
60
69
|
|
70
|
+
# @return [String]
|
61
71
|
def to_s
|
62
72
|
[self.name, self.version].compact.join(' ') || "Unknown"
|
63
73
|
end
|
@@ -2,7 +2,14 @@ require 'agent_orange/base'
|
|
2
2
|
|
3
3
|
module AgentOrange
|
4
4
|
class OperatingSystem < Base
|
5
|
-
|
5
|
+
# @return [Symbol] one of the keys from {OPERATING_SYSTEMS}
|
6
|
+
attr_accessor :type
|
7
|
+
|
8
|
+
# @return [String] one of the values from {OPERATING_SYSTEM_NAMES}
|
9
|
+
attr_accessor :name
|
10
|
+
|
11
|
+
# @return [AgentOrange::Version]
|
12
|
+
attr_accessor :version
|
6
13
|
|
7
14
|
OPERATING_SYSTEMS = {
|
8
15
|
:android => 'android',
|
@@ -62,6 +69,7 @@ module AgentOrange
|
|
62
69
|
AgentOrange.debug "", 2
|
63
70
|
end
|
64
71
|
|
72
|
+
# @return [String]
|
65
73
|
def to_s
|
66
74
|
[self.name, self.version].compact.join(' ')
|
67
75
|
end
|
@@ -2,7 +2,14 @@ require 'agent_orange/base'
|
|
2
2
|
|
3
3
|
module AgentOrange
|
4
4
|
class Platform < Base
|
5
|
-
|
5
|
+
# @return [Symbol] one of the keys from {PLATFORMS}
|
6
|
+
attr_accessor :type
|
7
|
+
|
8
|
+
# @return [String] one of the values from {PLATFORM_NAMES}
|
9
|
+
attr_accessor :name
|
10
|
+
|
11
|
+
# @return [AgentOrange::Version]
|
12
|
+
attr_accessor :version
|
6
13
|
|
7
14
|
PLATFORMS = {
|
8
15
|
:android => 'android',
|
@@ -17,6 +24,7 @@ module AgentOrange
|
|
17
24
|
:mac => 'Macintosh',
|
18
25
|
:pc => 'PC'
|
19
26
|
}
|
27
|
+
|
20
28
|
PLATFORM_VERSIONS = {
|
21
29
|
:ipad => 'ipad',
|
22
30
|
:iphone => 'iphone',
|
@@ -5,10 +5,15 @@ module AgentOrange
|
|
5
5
|
DEBUG_LEVEL = 1
|
6
6
|
|
7
7
|
class UserAgent
|
8
|
+
# @return [String]
|
8
9
|
attr_accessor :user_agent_string
|
10
|
+
|
9
11
|
attr_accessor :user_language
|
12
|
+
|
13
|
+
# @return [AgentOrange::Device]
|
10
14
|
attr_accessor :device
|
11
15
|
|
16
|
+
# @param [String] user_agent_string
|
12
17
|
def initialize(user_agent_string)
|
13
18
|
self.parse(user_agent_string)
|
14
19
|
end
|
@@ -26,18 +31,22 @@ module AgentOrange
|
|
26
31
|
self.summary
|
27
32
|
end
|
28
33
|
|
34
|
+
# @return [Boolean]
|
29
35
|
def is_computer?(type=nil)
|
30
36
|
self.device.is_computer?(type)
|
31
37
|
end
|
32
38
|
|
39
|
+
# @return [Boolean]
|
33
40
|
def is_mobile?(type=nil)
|
34
41
|
self.device.is_mobile?(type)
|
35
42
|
end
|
36
43
|
|
44
|
+
# @return [Boolean]
|
37
45
|
def is_bot?(type=nil)
|
38
46
|
self.device.is_bot?(type)
|
39
47
|
end
|
40
48
|
|
49
|
+
# @return [String]
|
41
50
|
def to_s
|
42
51
|
[self.device,
|
43
52
|
self.device.platform,
|
@@ -47,6 +56,7 @@ module AgentOrange
|
|
47
56
|
].compact.join(", ")
|
48
57
|
end
|
49
58
|
|
59
|
+
# @return [String]
|
50
60
|
def to_human_string
|
51
61
|
if self.device && self.device.engine && self.device.engine.browser
|
52
62
|
"User has a #{self.device} running #{self.device.engine.browser} (which is based on #{self.device.engine})."
|
data/lib/agent_orange/version.rb
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
module AgentOrange
|
2
|
-
VERSION = "0.1.
|
2
|
+
VERSION = "0.1.5" # This is for the gem and does not conflict with the rest of the functionality
|
3
3
|
|
4
4
|
class Version
|
5
|
-
|
5
|
+
# @return [String, nil]
|
6
|
+
attr_accessor :major
|
7
|
+
|
8
|
+
# @return [String, nil]
|
9
|
+
attr_accessor :minor
|
10
|
+
|
11
|
+
# @return [String, nil]
|
12
|
+
attr_accessor :patch_level
|
13
|
+
|
14
|
+
# @return [String, nil]
|
15
|
+
attr_accessor :build_number
|
6
16
|
|
7
17
|
def initialize(version_string)
|
8
18
|
version_string = sanitize_version_string(version_string)
|
@@ -20,6 +30,7 @@ module AgentOrange
|
|
20
30
|
self.build_number = pieces[3] if pieces_count >= 4
|
21
31
|
end
|
22
32
|
|
33
|
+
# @return [String]
|
23
34
|
def to_s
|
24
35
|
[self.major, self.minor, self.patch_level, self.build_number].compact.join('.')
|
25
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: agent_orange
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -104,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
104
|
version: '0'
|
105
105
|
segments:
|
106
106
|
- 0
|
107
|
-
hash:
|
107
|
+
hash: 3187188624662308564
|
108
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
109
|
none: false
|
110
110
|
requirements:
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
segments:
|
115
115
|
- 0
|
116
|
-
hash:
|
116
|
+
hash: 3187188624662308564
|
117
117
|
requirements: []
|
118
118
|
rubyforge_project: agent_orange
|
119
119
|
rubygems_version: 1.8.24
|