wurfl_device 0.1.3 → 0.1.4
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.
- data/.rvmrc +1 -0
- data/README.md +19 -0
- data/config/unicorn.conf.rb +15 -0
- data/config.ru +5 -0
- data/lib/wurfl_device/cli.rb +46 -0
- data/lib/wurfl_device/constants.rb +3 -0
- data/lib/wurfl_device/user_agent.rb +4 -0
- data/lib/wurfl_device/version.rb +1 -1
- data/lib/wurfl_device/web_service.rb +61 -0
- data/lib/wurfl_device.rb +3 -1
- data/wurfl_device.gemspec +4 -0
- metadata +51 -25
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.2
|
data/README.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
1
|
# WurflDevice
|
2
2
|
Ruby client library for mobile handset detection
|
3
3
|
|
4
|
+
|
5
|
+
requirements
|
6
|
+
------------
|
7
|
+
* [redis server](http://redis.io/)
|
8
|
+
|
9
|
+
|
10
|
+
usage
|
11
|
+
-----
|
12
|
+
|
13
|
+
require 'wurfl_device'
|
14
|
+
|
15
|
+
user_agent = 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95_8GB/20.0.016; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413'
|
16
|
+
|
17
|
+
device = WurflDevice.get_device_from_ua(user_agent)
|
18
|
+
|
19
|
+
# see device capabilities list for names
|
20
|
+
puts device.id
|
21
|
+
|
22
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'raindrops'
|
2
|
+
$stats ||= Raindrops::Middleware::Stats.new
|
3
|
+
|
4
|
+
app_env = ENV['RACK_ENV'] || 'development'
|
5
|
+
app_root = ::File.expand_path('../..', __FILE__)
|
6
|
+
|
7
|
+
timeout 60
|
8
|
+
worker_processes (app_env != 'development' ? 4 : 2)
|
9
|
+
listen "/tmp/wurfl_device/webservice.sock", :backlog => 64
|
10
|
+
pid "/tmp/wurfl_device/webservice.pid"
|
11
|
+
working_directory "#{app_root}"
|
12
|
+
stderr_path "/tmp/wurfl_device/webservice.log"
|
13
|
+
stdout_path "/tmp/wurfl_device/webservice.log"
|
14
|
+
|
15
|
+
preload_app false
|
data/config.ru
ADDED
data/lib/wurfl_device/cli.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'yaml'
|
2
3
|
require 'wurfl_device'
|
3
4
|
|
4
5
|
module WurflDevice
|
@@ -24,6 +25,51 @@ module WurflDevice
|
|
24
25
|
super
|
25
26
|
end
|
26
27
|
|
28
|
+
desc "server [start|stop|restart|status]", "start a wurfl_device server"
|
29
|
+
method_option :host, :type => :string, :banner => "set webservice host", :aliases => "-h", :default => WurflDevice::Constants::WEBSERVICE_HOST
|
30
|
+
method_option :port, :type => :numeric, :banner => "set webservice port", :aliases => "-p", :default => WurflDevice::Constants::WEBSERVICE_PORT
|
31
|
+
def server(action=nil)
|
32
|
+
opts = options.dup
|
33
|
+
|
34
|
+
action ||= 'status'
|
35
|
+
|
36
|
+
tmp_dir = WurflDevice.tmp_dir
|
37
|
+
FileUtils.cd(File.expand_path('../../', File.dirname(__FILE__)))
|
38
|
+
if action == 'start'
|
39
|
+
WurflDevice.ui.info "starting webservice at #{opts.host}:#{opts.port}"
|
40
|
+
args = [
|
41
|
+
File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']),
|
42
|
+
'-S',
|
43
|
+
'bundle', 'exec', 'unicorn',
|
44
|
+
'-o',
|
45
|
+
opts.host,
|
46
|
+
'-p',
|
47
|
+
opts.port,
|
48
|
+
'-c',
|
49
|
+
File.expand_path('../../config/unicorn.conf.rb', File.dirname(__FILE__)),
|
50
|
+
'-E',
|
51
|
+
'production',
|
52
|
+
'-D'
|
53
|
+
].join(' ')
|
54
|
+
|
55
|
+
system(args)
|
56
|
+
elsif action == 'stop'
|
57
|
+
WurflDevice.ui.info "stopping webservice..."
|
58
|
+
args = [
|
59
|
+
'kill',
|
60
|
+
'-QUIT',
|
61
|
+
"`cat #{tmp_dir}/webservice.pid`",
|
62
|
+
].join(' ')
|
63
|
+
|
64
|
+
system(args)
|
65
|
+
elsif action == 'restart'
|
66
|
+
server('stop')
|
67
|
+
server('start')
|
68
|
+
else
|
69
|
+
#status
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
27
73
|
desc "dump DEVICE_ID|USER_AGENT", "display capabilities DEVICE_ID|USER_AGENT"
|
28
74
|
method_option :json, :type => :boolean, :banner => "show the dump in json format", :aliases => "-j"
|
29
75
|
method_option :yaml, :type => :boolean, :banner => "show the dump in yaml format", :aliases => "-y"
|
data/lib/wurfl_device/version.rb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'wurfl_device'
|
3
|
+
require 'sinatra/base'
|
4
|
+
|
5
|
+
module WurflDevice
|
6
|
+
class WebService < Sinatra::Base
|
7
|
+
get '/' do
|
8
|
+
user_agent = request.env['HTTP_USER_AGENT'] || '-'
|
9
|
+
device = WurflDevice.get_device_from_ua(user_agent)
|
10
|
+
return device.capabilities.to_yaml unless device.nil?
|
11
|
+
{}.to_yaml
|
12
|
+
end
|
13
|
+
|
14
|
+
get '/:capa' do
|
15
|
+
user_agent = request.env['HTTP_USER_AGENT'] || '-'
|
16
|
+
device = WurflDevice.get_device_from_ua(user_agent)
|
17
|
+
return device.send(params[:capa]).to_yaml unless device.nil?
|
18
|
+
{}.to_yaml
|
19
|
+
end
|
20
|
+
|
21
|
+
get '/device/:id' do
|
22
|
+
device = WurflDevice.get_device_from_id(params[:id])
|
23
|
+
capabilities = {}
|
24
|
+
capabilities = device.capabilities unless device.nil?
|
25
|
+
capabilities.to_yaml
|
26
|
+
end
|
27
|
+
|
28
|
+
get '/device/:id/:capa' do
|
29
|
+
device = WurflDevice.get_device_from_id(params[:id])
|
30
|
+
capability = {}
|
31
|
+
capability = device.send(params[:capa]) unless device.nil?
|
32
|
+
capability.to_yaml
|
33
|
+
end
|
34
|
+
|
35
|
+
get '/actual_device/:id' do
|
36
|
+
capabilities = WurflDevice.get_actual_device(params[:id])
|
37
|
+
capabilities.to_yaml
|
38
|
+
end
|
39
|
+
|
40
|
+
get '/actual_device/:id/:capa' do
|
41
|
+
capabilities = WurflDevice.get_actual_device(params[:id])
|
42
|
+
get_capa(params[:capa], capabilities).to_yaml
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
def get_capa(capa, capabilities)
|
47
|
+
capability = nil
|
48
|
+
if capabilities.has_key?(capa)
|
49
|
+
capability = capabilities.send(capa)
|
50
|
+
else
|
51
|
+
capabilities.each_pair do |key, value|
|
52
|
+
if value.is_a?(Hash)
|
53
|
+
capability = value.send(capa)
|
54
|
+
break
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
return capability
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/wurfl_device.rb
CHANGED
data/wurfl_device.gemspec
CHANGED
@@ -14,10 +14,14 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.summary = %q{Ruby client library for mobile handset detection}
|
15
15
|
s.description = %q{Ruby client library for mobile handset detection}
|
16
16
|
|
17
|
+
s.rubyforge_project = 'wurfl_device'
|
18
|
+
|
17
19
|
s.add_dependency 'thor'
|
18
20
|
s.add_dependency 'nokogiri'
|
19
21
|
s.add_dependency 'redis'
|
20
22
|
s.add_dependency 'text'
|
23
|
+
s.add_dependency 'sinatra'
|
24
|
+
s.add_dependency 'unicorn'
|
21
25
|
|
22
26
|
s.add_development_dependency 'bundler', '>= 1.0.10'
|
23
27
|
s.add_development_dependency 'rake', '>= 0.9.2'
|
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.
|
4
|
+
version: 0.1.4
|
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-
|
12
|
+
date: 2011-10-21 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &253572180 !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: *
|
24
|
+
version_requirements: *253572180
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &253571740 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *253571740
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: redis
|
38
|
-
requirement: &
|
38
|
+
requirement: &253571320 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *253571320
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: text
|
49
|
-
requirement: &
|
49
|
+
requirement: &253570900 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,32 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *253570900
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: sinatra
|
60
|
+
requirement: &253570480 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *253570480
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: unicorn
|
71
|
+
requirement: &253570060 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *253570060
|
58
80
|
- !ruby/object:Gem::Dependency
|
59
81
|
name: bundler
|
60
|
-
requirement: &
|
82
|
+
requirement: &253569560 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
84
|
requirements:
|
63
85
|
- - ! '>='
|
@@ -65,10 +87,10 @@ dependencies:
|
|
65
87
|
version: 1.0.10
|
66
88
|
type: :development
|
67
89
|
prerelease: false
|
68
|
-
version_requirements: *
|
90
|
+
version_requirements: *253569560
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
92
|
name: rake
|
71
|
-
requirement: &
|
93
|
+
requirement: &253569040 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
96
|
- - ! '>='
|
@@ -76,10 +98,10 @@ dependencies:
|
|
76
98
|
version: 0.9.2
|
77
99
|
type: :development
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *253569040
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
103
|
name: rspec-core
|
82
|
-
requirement: &
|
104
|
+
requirement: &253568540 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
107
|
- - ~>
|
@@ -87,10 +109,10 @@ dependencies:
|
|
87
109
|
version: '2.0'
|
88
110
|
type: :development
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *253568540
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
114
|
name: rspec-expectations
|
93
|
-
requirement: &
|
115
|
+
requirement: &253568000 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ~>
|
@@ -98,10 +120,10 @@ dependencies:
|
|
98
120
|
version: '2.0'
|
99
121
|
type: :development
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *253568000
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
125
|
name: rr
|
104
|
-
requirement: &
|
126
|
+
requirement: &253567460 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ~>
|
@@ -109,10 +131,10 @@ dependencies:
|
|
109
131
|
version: '1.0'
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *253567460
|
113
135
|
- !ruby/object:Gem::Dependency
|
114
136
|
name: faker
|
115
|
-
requirement: &
|
137
|
+
requirement: &253566760 !ruby/object:Gem::Requirement
|
116
138
|
none: false
|
117
139
|
requirements:
|
118
140
|
- - ~>
|
@@ -120,10 +142,10 @@ dependencies:
|
|
120
142
|
version: '0.9'
|
121
143
|
type: :development
|
122
144
|
prerelease: false
|
123
|
-
version_requirements: *
|
145
|
+
version_requirements: *253566760
|
124
146
|
- !ruby/object:Gem::Dependency
|
125
147
|
name: simplecov
|
126
|
-
requirement: &
|
148
|
+
requirement: &253547780 !ruby/object:Gem::Requirement
|
127
149
|
none: false
|
128
150
|
requirements:
|
129
151
|
- - ~>
|
@@ -131,7 +153,7 @@ dependencies:
|
|
131
153
|
version: 0.5.3
|
132
154
|
type: :development
|
133
155
|
prerelease: false
|
134
|
-
version_requirements: *
|
156
|
+
version_requirements: *253547780
|
135
157
|
description: Ruby client library for mobile handset detection
|
136
158
|
email:
|
137
159
|
- ahutalla@gmail.com
|
@@ -143,11 +165,14 @@ extra_rdoc_files:
|
|
143
165
|
- README.md
|
144
166
|
files:
|
145
167
|
- .gitignore
|
168
|
+
- .rvmrc
|
146
169
|
- Gemfile
|
147
170
|
- LICENSE
|
148
171
|
- README.md
|
149
172
|
- Rakefile
|
150
173
|
- bin/wurfldevice
|
174
|
+
- config.ru
|
175
|
+
- config/unicorn.conf.rb
|
151
176
|
- lib/wurfl_device.rb
|
152
177
|
- lib/wurfl_device/capability.rb
|
153
178
|
- lib/wurfl_device/cli.rb
|
@@ -157,6 +182,7 @@ files:
|
|
157
182
|
- lib/wurfl_device/user_agent.rb
|
158
183
|
- lib/wurfl_device/user_agent_matcher.rb
|
159
184
|
- lib/wurfl_device/version.rb
|
185
|
+
- lib/wurfl_device/web_service.rb
|
160
186
|
- lib/wurfl_device/xml_loader.rb
|
161
187
|
- spec/cache/device_spec.rb
|
162
188
|
- spec/spec_helper.rb
|
@@ -180,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
206
|
- !ruby/object:Gem::Version
|
181
207
|
version: '0'
|
182
208
|
requirements: []
|
183
|
-
rubyforge_project:
|
209
|
+
rubyforge_project: wurfl_device
|
184
210
|
rubygems_version: 1.8.10
|
185
211
|
signing_key:
|
186
212
|
specification_version: 3
|