rack-smartphone_detector 0.0.3 → 0.0.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.
@@ -9,7 +9,7 @@ module Rack
|
|
9
9
|
SMARTPHONE_IDENTIFIERS = [
|
10
10
|
{ identifier: 'iPhone', regexp: /iPhone/ },
|
11
11
|
{ identifier: 'iPad', regexp: /iPad/ },
|
12
|
-
{ identifier: 'Android', regexp: /Android.+
|
12
|
+
{ identifier: 'Android', regexp: /Android.+Mobi(le)?/ },
|
13
13
|
{ identifier: 'Android Tablet', regexp: /Android/ },
|
14
14
|
{ identifier: 'Windows Phone', regexp: /Windows Phone/ },
|
15
15
|
]
|
@@ -7,11 +7,38 @@ describe 'Rack::SmartphoneDetector' do
|
|
7
7
|
include Rack::Test::Methods
|
8
8
|
|
9
9
|
SMARTPHONES = [
|
10
|
-
{
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
{
|
11
|
+
name: 'iPhone',
|
12
|
+
user_agents: [
|
13
|
+
'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25',
|
14
|
+
]
|
15
|
+
},
|
16
|
+
{
|
17
|
+
name: 'iPad',
|
18
|
+
user_agents: [
|
19
|
+
'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25'
|
20
|
+
]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
name: 'Android',
|
24
|
+
user_agents: [
|
25
|
+
'Mozilla/5.0 (Linux; U; Android 4.0.1; ja-jp; Galaxy Nexus Build/ITL41D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
|
26
|
+
'Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0',
|
27
|
+
'Opera/9.80 (Android 4.2.1; Linux; Opera Mobi/ADR-1301080958) Presto/2.11.355 Version/12.10'
|
28
|
+
]
|
29
|
+
},
|
30
|
+
{
|
31
|
+
name: 'Android Tablet',
|
32
|
+
user_agents: [
|
33
|
+
'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03S) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
|
34
|
+
]
|
35
|
+
},
|
36
|
+
{
|
37
|
+
name: 'Windows Phone',
|
38
|
+
user_agents: [
|
39
|
+
'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; FujitsuToshibaMobileCommun; IS12T; KDDI)'
|
40
|
+
]
|
41
|
+
}
|
15
42
|
]
|
16
43
|
|
17
44
|
let(:app) do
|
@@ -21,25 +48,34 @@ describe 'Rack::SmartphoneDetector' do
|
|
21
48
|
|
22
49
|
it 'sets environment variable if the request comes from smartphone' do
|
23
50
|
SMARTPHONES.each do |info|
|
24
|
-
|
25
|
-
|
26
|
-
|
51
|
+
info[:user_agents].each do |ua|
|
52
|
+
header 'User-Agent', ua
|
53
|
+
get '/'
|
54
|
+
last_request.env['rack.smartphone_detector.device'].must_equal info[:name]
|
55
|
+
end
|
27
56
|
end
|
28
57
|
end
|
29
58
|
|
30
59
|
describe '#from_smartphone?' do
|
31
60
|
it 'returns true if the request comes from smartphone' do
|
32
61
|
SMARTPHONES.each do |info|
|
33
|
-
|
34
|
-
|
35
|
-
|
62
|
+
info[:user_agents].each do |ua|
|
63
|
+
header 'User-Agent', ua
|
64
|
+
get '/'
|
65
|
+
last_request.from_smartphone?.must_equal true
|
66
|
+
end
|
36
67
|
end
|
37
68
|
end
|
38
69
|
|
39
70
|
it 'returns false if the request does not come from smartphone' do
|
40
|
-
|
41
|
-
|
42
|
-
|
71
|
+
[
|
72
|
+
'DoCoMo/2.0 F01E(c500;TB;W24H16)',
|
73
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11'
|
74
|
+
].each do |ua|
|
75
|
+
header 'User-Agent', ua
|
76
|
+
get '/'
|
77
|
+
last_request.from_smartphone?.must_equal false
|
78
|
+
end
|
43
79
|
end
|
44
80
|
|
45
81
|
it 'returns false if the request comes from device without user-agent' do
|
@@ -50,45 +86,55 @@ describe 'Rack::SmartphoneDetector' do
|
|
50
86
|
|
51
87
|
describe '#from_iphone?' do
|
52
88
|
it 'returns true if the request comes from iphone' do
|
53
|
-
|
54
|
-
|
55
|
-
|
89
|
+
user_agents('iPhone').each do |ua|
|
90
|
+
header 'User-Agent', ua
|
91
|
+
get '/'
|
92
|
+
last_request.from_iphone?.must_equal true
|
93
|
+
end
|
56
94
|
end
|
57
95
|
end
|
58
96
|
|
59
97
|
describe '#from_ipad?' do
|
60
98
|
it 'returns true if the request comes from ipad' do
|
61
|
-
|
62
|
-
|
63
|
-
|
99
|
+
user_agents('iPad').each do |ua|
|
100
|
+
header 'User-Agent', ua
|
101
|
+
get '/'
|
102
|
+
last_request.from_ipad?.must_equal true
|
103
|
+
end
|
64
104
|
end
|
65
105
|
end
|
66
106
|
|
67
107
|
describe '#from_android?' do
|
68
108
|
it 'returns true if the request comes from android mobile' do
|
69
|
-
|
70
|
-
|
71
|
-
|
109
|
+
user_agents('Android').each do |ua|
|
110
|
+
header 'User-Agent', ua
|
111
|
+
get '/'
|
112
|
+
last_request.from_android?.must_equal true
|
113
|
+
end
|
72
114
|
end
|
73
115
|
end
|
74
116
|
|
75
117
|
describe '#from_android_tablet?' do
|
76
118
|
it 'returns true if the request comes from android tablet' do
|
77
|
-
|
78
|
-
|
79
|
-
|
119
|
+
user_agents('Android Tablet').each do |ua|
|
120
|
+
header 'User-Agent', ua
|
121
|
+
get '/'
|
122
|
+
last_request.from_android_tablet?.must_equal true
|
123
|
+
end
|
80
124
|
end
|
81
125
|
end
|
82
126
|
|
83
127
|
describe '#from_windows_phone?' do
|
84
128
|
it 'returns true if the request comes from windows phone' do
|
85
|
-
|
86
|
-
|
87
|
-
|
129
|
+
user_agents('Windows Phone').each do |ua|
|
130
|
+
header 'User-Agent', ua
|
131
|
+
get '/'
|
132
|
+
last_request.from_windows_phone?.must_equal true
|
133
|
+
end
|
88
134
|
end
|
89
135
|
end
|
90
136
|
|
91
|
-
def
|
92
|
-
SMARTPHONES.find { |info| info[:name] == name }[:
|
137
|
+
def user_agents(name)
|
138
|
+
SMARTPHONES.find { |info| info[:name] == name }[:user_agents]
|
93
139
|
end
|
94
140
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-smartphone_detector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -108,18 +108,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
108
|
- - ! '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
-
segments:
|
112
|
-
- 0
|
113
|
-
hash: 4226079495124680780
|
114
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
112
|
none: false
|
116
113
|
requirements:
|
117
114
|
- - ! '>='
|
118
115
|
- !ruby/object:Gem::Version
|
119
116
|
version: '0'
|
120
|
-
segments:
|
121
|
-
- 0
|
122
|
-
hash: 4226079495124680780
|
123
117
|
requirements: []
|
124
118
|
rubyforge_project:
|
125
119
|
rubygems_version: 1.8.23
|