wurfl_device 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wurfl_device
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-22 00:00:00.000000000Z
12
+ date: 2011-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: thor
16
- requirement: &224270260 !ruby/object:Gem::Requirement
15
+ name: hiredis
16
+ requirement: &264315840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *224270260
24
+ version_requirements: *264315840
25
25
  - !ruby/object:Gem::Dependency
26
- name: nokogiri
27
- requirement: &224269820 !ruby/object:Gem::Requirement
26
+ name: redis
27
+ requirement: &264313640 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *224269820
35
+ version_requirements: *264313640
36
36
  - !ruby/object:Gem::Dependency
37
- name: redis
38
- requirement: &224269400 !ruby/object:Gem::Requirement
37
+ name: thor
38
+ requirement: &264312400 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *264312400
47
+ - !ruby/object:Gem::Dependency
48
+ name: ox
49
+ requirement: &264311620 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :runtime
45
56
  prerelease: false
46
- version_requirements: *224269400
57
+ version_requirements: *264311620
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: text
49
- requirement: &224268980 !ruby/object:Gem::Requirement
60
+ requirement: &264309700 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :runtime
56
67
  prerelease: false
57
- version_requirements: *224268980
68
+ version_requirements: *264309700
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: sinatra
60
- requirement: &224268560 !ruby/object:Gem::Requirement
71
+ requirement: &264233040 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: '0'
66
77
  type: :runtime
67
78
  prerelease: false
68
- version_requirements: *224268560
79
+ version_requirements: *264233040
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: unicorn
71
- requirement: &224268140 !ruby/object:Gem::Requirement
82
+ requirement: &264232040 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: '0'
77
88
  type: :runtime
78
89
  prerelease: false
79
- version_requirements: *224268140
90
+ version_requirements: *264232040
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: bundler
82
- requirement: &224267640 !ruby/object:Gem::Requirement
93
+ requirement: &264230720 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,10 +98,10 @@ dependencies:
87
98
  version: 1.0.10
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *224267640
101
+ version_requirements: *264230720
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: rake
93
- requirement: &224267120 !ruby/object:Gem::Requirement
104
+ requirement: &264229320 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ! '>='
@@ -98,10 +109,10 @@ dependencies:
98
109
  version: 0.9.2
99
110
  type: :development
100
111
  prerelease: false
101
- version_requirements: *224267120
112
+ version_requirements: *264229320
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: rspec-core
104
- requirement: &224266620 !ruby/object:Gem::Requirement
115
+ requirement: &264227060 !ruby/object:Gem::Requirement
105
116
  none: false
106
117
  requirements:
107
118
  - - ~>
@@ -109,10 +120,10 @@ dependencies:
109
120
  version: '2.0'
110
121
  type: :development
111
122
  prerelease: false
112
- version_requirements: *224266620
123
+ version_requirements: *264227060
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: rspec-expectations
115
- requirement: &224266080 !ruby/object:Gem::Requirement
126
+ requirement: &263847780 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ~>
@@ -120,10 +131,10 @@ dependencies:
120
131
  version: '2.0'
121
132
  type: :development
122
133
  prerelease: false
123
- version_requirements: *224266080
134
+ version_requirements: *263847780
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: rr
126
- requirement: &224265540 !ruby/object:Gem::Requirement
137
+ requirement: &263847080 !ruby/object:Gem::Requirement
127
138
  none: false
128
139
  requirements:
129
140
  - - ~>
@@ -131,29 +142,29 @@ dependencies:
131
142
  version: '1.0'
132
143
  type: :development
133
144
  prerelease: false
134
- version_requirements: *224265540
145
+ version_requirements: *263847080
135
146
  - !ruby/object:Gem::Dependency
136
- name: faker
137
- requirement: &224264820 !ruby/object:Gem::Requirement
147
+ name: simplecov
148
+ requirement: &263846340 !ruby/object:Gem::Requirement
138
149
  none: false
139
150
  requirements:
140
151
  - - ~>
141
152
  - !ruby/object:Gem::Version
142
- version: '0.9'
153
+ version: 0.5.3
143
154
  type: :development
144
155
  prerelease: false
145
- version_requirements: *224264820
156
+ version_requirements: *263846340
146
157
  - !ruby/object:Gem::Dependency
147
- name: simplecov
148
- requirement: &224246240 !ruby/object:Gem::Requirement
158
+ name: fakeredis
159
+ requirement: &263845620 !ruby/object:Gem::Requirement
149
160
  none: false
150
161
  requirements:
151
162
  - - ~>
152
163
  - !ruby/object:Gem::Version
153
- version: 0.5.3
164
+ version: 0.2.2
154
165
  type: :development
155
166
  prerelease: false
156
- version_requirements: *224246240
167
+ version_requirements: *263845620
157
168
  description: Ruby client library for mobile handset detection
158
169
  email:
159
170
  - ahutalla@gmail.com
@@ -174,10 +185,10 @@ files:
174
185
  - config.ru
175
186
  - config/unicorn.conf.rb
176
187
  - lib/wurfl_device.rb
188
+ - lib/wurfl_device/cache.rb
177
189
  - lib/wurfl_device/capability.rb
178
190
  - lib/wurfl_device/cli.rb
179
- - lib/wurfl_device/constants.rb
180
- - lib/wurfl_device/device.rb
191
+ - lib/wurfl_device/settings.rb
181
192
  - lib/wurfl_device/ui.rb
182
193
  - lib/wurfl_device/user_agent.rb
183
194
  - lib/wurfl_device/user_agent_matcher.rb
@@ -185,6 +196,7 @@ files:
185
196
  - lib/wurfl_device/web_service.rb
186
197
  - lib/wurfl_device/xml_loader.rb
187
198
  - spec/cache/device_spec.rb
199
+ - spec/cache/user_agents_spec.rb
188
200
  - spec/spec_helper.rb
189
201
  - wurfl_device.gemspec
190
202
  homepage: http://github.com/aputs/wurfl_device
@@ -205,7 +217,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
217
  - - ! '>='
206
218
  - !ruby/object:Gem::Version
207
219
  version: '0'
208
- requirements: []
220
+ requirements:
221
+ - redis server
209
222
  rubyforge_project: wurfl_device
210
223
  rubygems_version: 1.8.10
211
224
  signing_key:
@@ -213,4 +226,5 @@ specification_version: 3
213
226
  summary: Ruby client library for mobile handset detection
214
227
  test_files:
215
228
  - spec/cache/device_spec.rb
229
+ - spec/cache/user_agents_spec.rb
216
230
  - spec/spec_helper.rb
@@ -1,43 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require 'etc'
3
-
4
- module WurflDevice
5
- class Constants
6
- LOCK_TIMEOUT = 3
7
- LOCK_EXPIRE = 10
8
- LOCK_SLEEP = 0.1
9
-
10
- WEBSERVICE_HOST = '127.0.0.1'
11
- WEBSERVICE_PORT = 8090
12
- WEBSERVICE_ROOT = File.join(File.expand_path('~'), '.wurfl_device')
13
- WEBSERVICE_PID = 'webservice.pid'
14
- WEBSERVICE_LOG = 'webservice.log'
15
- WEBSERVICE_SOCKET = 'webservice.sock'
16
- WEBSERVICE_WORKER = 4
17
-
18
- DB_INDEX = "7".freeze
19
- GENERIC = 'generic'
20
- GENERIC_XHTML = 'generic_xhtml'
21
- GENERIC_WEB_BROWSER = 'generic_web_browser'
22
- WURFL = "wurfl:"
23
- WURFL_INFO = "wurfl:info"
24
- WURFL_DEVICES = "wurfl:devices:"
25
- WURFL_DEVICES_INDEX = "wurfl:index:"
26
- WURFL_INITIALIZED = "wurfl:is_initialized"
27
- WURFL_INITIALIZING = "wurfl:is_initializing"
28
- WURFL_USER_AGENTS = "wurfl:user_agents"
29
- WURFL_USER_AGENTS_CACHED = "wurfl:user_agents_cached"
30
-
31
- WORST_MATCH = 7
32
-
33
- MOBILE_BROWSERS = [
34
- 'cldc', 'symbian', 'midp', 'j2me', 'mobile', 'wireless', 'palm', 'phone', 'pocket pc', 'pocketpc', 'netfront',
35
- 'bolt', 'iris', 'brew', 'openwave', 'windows ce', 'wap2.', 'android', 'opera mini', 'opera mobi', 'maemo', 'fennec',
36
- 'blazer', 'vodafone', 'wp7', 'armv'
37
- ]
38
-
39
- ROBOTS = [ 'bot', 'crawler', 'spider', 'novarra', 'transcoder', 'yahoo! searchmonkey', 'yahoo! slurp', 'feedfetcher-google', 'toolbar', 'mowser' ]
40
- DESKTOP_BROWSERS = [ 'slcc1', '.net clr', 'wow64', 'media center pc', 'funwebproducts', 'macintosh', 'aol 9.', 'america online browser', 'googletoolbar' ]
41
-
42
- end
43
- end
@@ -1,83 +0,0 @@
1
- require 'yaml'
2
- require 'redis'
3
-
4
- module WurflDevice
5
- class Device
6
- attr_accessor :capabilities
7
-
8
- def initialize(device_id=nil)
9
- raise WurflDevice::CacheError, "wurfl cache is not initialized" unless WurflDevice.is_initialized?
10
- if device_id.nil?
11
- @capabilities = WurflDevice.get_actual_device(WurflDevice::Constants::GENERIC)
12
- else
13
- @capabilities = build_device(device_id)
14
- end
15
- @capabilities['actual_device_root'] ||= ((@capabilities['user_agent'] !~ /^DO_NOT_MATCH/i) ? true : false)
16
- end
17
-
18
- def is_valid?
19
- return false if @capabilities.nil?
20
- return false if @capabilities.id.nil?
21
- return false if @capabilities.id.empty?
22
- return true
23
- end
24
-
25
- def is_generic?
26
- is_valid? && @capabilities.id !~ Regexp.new(WurflDevice::Constants::GENERIC, Regexp::IGNORECASE)
27
- end
28
-
29
- def build_device(device_id)
30
- capabilities = Capability.new
31
- device = WurflDevice.get_actual_device_raw(device_id)
32
- return nil if device.nil?
33
-
34
- capabilities['fall_back_tree'] ||= Array.new
35
-
36
- if !device['fall_back'].nil? && !device['fall_back'].empty? && device['fall_back'] != 'root'
37
- fall_back = build_device(device['fall_back'])
38
- unless fall_back.nil?
39
- capabilities['fall_back_tree'].unshift(fall_back['id'])
40
- fall_back.each_pair do |key, value|
41
- if value.kind_of?(Hash)
42
- capabilities[key] ||= Capability.new
43
- value.each_pair do |k, v|
44
- capabilities[key][k] = v
45
- end
46
- elsif value.is_a?(Array)
47
- capabilities[key] ||= Array.new
48
- capabilities[key] |= value
49
- else
50
- capabilities[key] = value
51
- end
52
- end
53
- end
54
- end
55
-
56
- device.each_pair do |key, value|
57
- if key =~ /^(.+)\:(.+)$/i
58
- capabilities[$1] ||= Capability.new
59
- capabilities[$1][$2] = WurflDevice.parse_string_value(value)
60
- else
61
- capabilities[key] = WurflDevice.parse_string_value(value)
62
- end
63
- end
64
-
65
- capabilities
66
- end
67
-
68
- # Magic predicates
69
- # slower than going directly to capabilities
70
- def method_missing(method, *args, &block)
71
- return nil if @capabilities.nil?
72
- meth = method.to_s
73
- meth.gsub!(/\?/, '')
74
- return @capabilities.send(method, args, block) if @capabilities.has_key?(meth)
75
- @capabilities.each_pair do |key, value|
76
- if value.is_a?(Hash)
77
- return value.send(method, args, block) if value.has_key?(meth)
78
- end
79
- end
80
- return nil
81
- end
82
- end
83
- end