mobileesp_converted 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ task :default => [:test]
7
7
  desc "Download Java MobileESP source code to ./tmp directory."
8
8
  task :download_source do
9
9
  `mkdir -p java_source`
10
- `cd java_source; wget http://mobileesp.googlecode.com/svn/Java/UAgentInfo.java`
10
+ `cd java_source; rm UAgentInfo.java; wget http://mobileesp.googlecode.com/svn/Java/UAgentInfo.java`
11
11
  end
12
12
 
13
13
  Rake::TestTask.new do |t|
@@ -1,6 +1,21 @@
1
1
  /* *******************************************
2
2
  // Copyright 2010-2012, Anthony Hand
3
3
  //
4
+ // File version date: April 23, 2012
5
+ // Update:
6
+ // - Updated DetectAmazonSilk(): Fixed an issue in the detection logic.
7
+ //
8
+ // File version date: April 22, 2012 - Second update
9
+ // Update: To address additional Kindle issues...
10
+ // - Updated DetectRichCSS(): Excluded e-Ink Kindle devices.
11
+ // - Created DetectAmazonSilk(): Created to detect Kindle Fire devices in Silk mode.
12
+ // - Updated DetectMobileQuick(): Updated to include e-Ink Kindle devices and the Kindle Fire in Silk mode.
13
+ //
14
+ // File version date: April 11, 2012
15
+ // Update:
16
+ // - Added a new variable for the new BlackBerry Curve Touch (9380): deviceBBCurveTouch.
17
+ // - Updated DetectBlackBerryTouch() to support the new BlackBerry Curve Touch (9380).
18
+ //
4
19
  // File version date: January 21, 2012
5
20
  // Update:
6
21
  // - Moved Windows Phone 7 to the iPhone Tier. WP7.5's IE 9-based browser is good enough now.
@@ -16,13 +31,6 @@
16
31
  // Update:
17
32
  // - Updated DetectAndroidTablet() to exclude Opera Mini, which was falsely reporting as running on a tablet device when on a phone.
18
33
  //
19
- // File version date: August 7, 2011
20
- // Update:
21
- // - The Opera for Android browser doesn't follow Google's recommended useragent string guidelines, so some fixes were needed.
22
- // - Updated DetectAndroidPhone() and DetectAndroidTablet() to properly detect devices running Opera Mobile.
23
- // - Created 2 new methods: DetectOperaAndroidPhone() and DetectOperaAndroidTablet().
24
- // - Updated DetectTierIphone(). Removed the call to DetectMaemoTablet(), an obsolete mobile OS.
25
- //
26
34
  //
27
35
  // LICENSE INFORMATION
28
36
  // Licensed under the Apache License, Version 2.0 (the "License");
@@ -106,6 +114,7 @@ public class UAgentInfo {
106
114
  public static final String deviceBBBoldTouch = "blackberry 99"; //Bold 99x0 (touchscreen)
107
115
  public static final String deviceBBTour = "blackberry96"; //Tour
108
116
  public static final String deviceBBCurve = "blackberry89"; //Curve 2
117
+ public static final String deviceBBCurveTouch = "blackberry 938"; //Curve Touch 9380
109
118
  public static final String deviceBBTorch = "blackberry 98"; //Torch
110
119
  public static final String deviceBBPlaybook = "playbook"; //PlayBook tablet
111
120
 
@@ -116,7 +125,8 @@ public class UAgentInfo {
116
125
  public static final String engineBlazer = "blazer"; //Old Palm
117
126
  public static final String engineXiino = "xiino"; //Another old Palm
118
127
 
119
- public static final String deviceKindle = "kindle"; //Amazon Kindle, eInk one.
128
+ public static final String deviceKindle = "kindle"; //Amazon Kindle, eInk one
129
+ public static final String engineSilk = "silk"; //Amazon's accelerated Silk browser for Kindle Fire
120
130
 
121
131
  public static final String deviceNuvifone = "nuvifone"; //Garmin Nuvifone
122
132
 
@@ -533,7 +543,8 @@ public class UAgentInfo {
533
543
  if (detectBlackBerry() &&
534
544
  (userAgent.indexOf(deviceBBStorm) != -1 ||
535
545
  userAgent.indexOf(deviceBBTorch) != -1 ||
536
- userAgent.indexOf(deviceBBBoldTouch) != -1)) {
546
+ userAgent.indexOf(deviceBBBoldTouch) != -1 ||
547
+ userAgent.indexOf(deviceBBCurveTouch) != -1 )) {
537
548
  return true;
538
549
  }
539
550
  return false;
@@ -745,6 +756,18 @@ public class UAgentInfo {
745
756
  return false;
746
757
  }
747
758
 
759
+ /**
760
+ * Detects if the current Amazon device is using the Silk Browser.
761
+ * Note: Typically used by the the Kindle Fire.
762
+ * @return detection of an Amazon Kindle Fire in Silk mode.
763
+ */
764
+ public boolean detectAmazonSilk() {
765
+ if (userAgent.indexOf(engineSilk) != -1) {
766
+ return true;
767
+ }
768
+ return false;
769
+ }
770
+
748
771
  /**
749
772
  * Detects if the current device is a mobile device.
750
773
  * This method catches most of the popular modern devices.
@@ -789,6 +812,12 @@ public class UAgentInfo {
789
812
  return true;
790
813
  }
791
814
 
815
+ //We also look for Kindle devices
816
+ if (detectKindle()
817
+ || detectAmazonSilk()) {
818
+ return true;
819
+ }
820
+
792
821
  return false;
793
822
  }
794
823
 
@@ -990,7 +1019,8 @@ public class UAgentInfo {
990
1019
  //Note: 'High' BlackBerry devices ONLY
991
1020
  if (detectMobileQuick()) {
992
1021
 
993
- if (!detectTierIphone()) {
1022
+ //Exclude iPhone Tier and e-Ink Kindle devices.
1023
+ if (!detectTierIphone() && !detectKindle()) {
994
1024
 
995
1025
  //The following devices are explicitly ok.
996
1026
  //Note: 'High' BlackBerry devices ONLY
@@ -6,6 +6,21 @@
6
6
  *******************************************
7
7
  # Copyright 2010-2012, Anthony Hand
8
8
  #
9
+ # File version date: April 23, 2012
10
+ # Update:
11
+ # - Updated DetectAmazonSilk(): Fixed an issue in the detection logic.
12
+ #
13
+ # File version date: April 22, 2012 - Second update
14
+ # Update: To address additional Kindle issues...
15
+ # - Updated DetectRichCSS(): Excluded e-Ink Kindle devices.
16
+ # - Created DetectAmazonSilk(): Created to detect Kindle Fire devices in Silk mode.
17
+ # - Updated DetectMobileQuick(): Updated to include e-Ink Kindle devices and the Kindle Fire in Silk mode.
18
+ #
19
+ # File version date: April 11, 2012
20
+ # Update:
21
+ # - Added a new variable for the new BlackBerry Curve Touch (9380): deviceBBCurveTouch.
22
+ # - Updated DetectBlackBerryTouch() to support the new BlackBerry Curve Touch (9380).
23
+ #
9
24
  # File version date: January 21, 2012
10
25
  # Update:
11
26
  # - Moved Windows Phone 7 to the iPhone Tier. WP7.5's IE 9-based browser is good enough now.
@@ -21,13 +36,6 @@
21
36
  # Update:
22
37
  # - Updated DetectAndroidTablet() to exclude Opera Mini, which was falsely reporting as running on a tablet device when on a phone.
23
38
  #
24
- # File version date: August 7, 2011
25
- # Update:
26
- # - The Opera for Android browser doesn't follow Google's recommended useragent string guidelines, so some fixes were needed.
27
- # - Updated DetectAndroidPhone() and DetectAndroidTablet() to properly detect devices running Opera Mobile.
28
- # - Created 2 new methods: DetectOperaAndroidPhone() and DetectOperaAndroidTablet().
29
- # - Updated DetectTierIphone(). Removed the call to DetectMaemoTablet(), an obsolete mobile OS.
30
- #
31
39
  #
32
40
  # LICENSE INFORMATION
33
41
  # Licensed under the Apache License, Version 2.0 (the "License")
@@ -115,6 +123,7 @@ module MobileESPConverted
115
123
  DEVICE_B_B_BOLD_TOUCH = "blackberry 99"
116
124
  DEVICE_B_B_TOUR = "blackberry96"
117
125
  DEVICE_B_B_CURVE = "blackberry89"
126
+ DEVICE_B_B_CURVE_TOUCH = "blackberry 938"
118
127
  DEVICE_B_B_TORCH = "blackberry 98"
119
128
  DEVICE_B_B_PLAYBOOK = "playbook"
120
129
 
@@ -126,6 +135,7 @@ module MobileESPConverted
126
135
  ENGINE_XIINO = "xiino"
127
136
 
128
137
  DEVICE_KINDLE = "kindle"
138
+ ENGINE_SILK = "silk"
129
139
 
130
140
  DEVICE_NUVIFONE = "nuvifone"
131
141
 
@@ -595,7 +605,8 @@ module MobileESPConverted
595
605
  if (detect_black_berry() &&
596
606
  (user_agent.include?(DEVICE_B_B_STORM) ||
597
607
  user_agent.include?(DEVICE_B_B_TORCH) ||
598
- user_agent.include?(DEVICE_B_B_BOLD_TOUCH)))
608
+ user_agent.include?(DEVICE_B_B_BOLD_TOUCH) ||
609
+ user_agent.include?(DEVICE_B_B_CURVE_TOUCH) ))
599
610
  return true
600
611
  end
601
612
  return false
@@ -812,6 +823,20 @@ module MobileESPConverted
812
823
  return false
813
824
  end
814
825
 
826
+ =begin
827
+ *
828
+ * Detects if the current Amazon device is using the Silk Browser.
829
+ * Note: Typically used by the the Kindle Fire.
830
+ * @return detection of an Amazon Kindle Fire in Silk mode.
831
+
832
+ =end
833
+ def detect_amazon_silk()
834
+ if (user_agent.include?(ENGINE_SILK))
835
+ return true
836
+ end
837
+ return false
838
+ end
839
+
815
840
  =begin
816
841
  *
817
842
  * Detects if the current device is a mobile device.
@@ -850,6 +875,11 @@ module MobileESPConverted
850
875
  return true
851
876
  end
852
877
 
878
+
879
+ if (detect_kindle() || detect_amazon_silk())
880
+ return true
881
+ end
882
+
853
883
  return false
854
884
  end
855
885
 
@@ -1054,7 +1084,8 @@ module MobileESPConverted
1054
1084
 
1055
1085
  if (detect_mobile_quick())
1056
1086
 
1057
- if (!detect_tier_iphone())
1087
+
1088
+ if (!detect_tier_iphone() && !detect_kindle())
1058
1089
 
1059
1090
 
1060
1091
 
@@ -1,3 +1,3 @@
1
1
  module MobileESPConverted
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -19,6 +19,7 @@ Gem::Specification.new do |gem|
19
19
  # Smart irb
20
20
  gem.add_development_dependency 'pry'
21
21
 
22
+ gem.add_development_dependency 'rake'
22
23
  # Specs
23
24
  gem.add_development_dependency 'minitest'
24
25
  end
@@ -106,6 +106,32 @@ module MobileESPConverted
106
106
  uai.detect_android_phone.must_equal false
107
107
  uai.detect_android_tablet.must_equal false
108
108
  end
109
+
110
+ # categorization according to original MobileESP implementation
111
+ it "categorizes Kindle Fire" do
112
+ uai = UserAgentInfo.new("Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", "text/html")
113
+ uai.is_tier_tablet.must_equal false
114
+ uai.is_tier_iphone.must_equal true
115
+ uai.is_tier_rich_css.must_equal false
116
+ uai.is_tier_generic_mobile.must_equal false
117
+ uai.detect_iphone.must_equal false
118
+ uai.detect_ipad.must_equal false
119
+ uai.detect_android_phone.must_equal true
120
+ uai.detect_android_tablet.must_equal false
121
+ end
122
+
123
+ # categorization according to original MobileESP implementation
124
+ it "categorizes Kindle Fire silk mode" do
125
+ uai = UserAgentInfo.new("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true", "text/html")
126
+ uai.is_tier_tablet.must_equal false
127
+ uai.is_tier_iphone.must_equal false
128
+ uai.is_tier_rich_css.must_equal true
129
+ uai.is_tier_generic_mobile.must_equal false
130
+ uai.detect_iphone.must_equal false
131
+ uai.detect_ipad.must_equal false
132
+ uai.detect_android_phone.must_equal false
133
+ uai.detect_android_tablet.must_equal false
134
+ end
109
135
  end
110
136
  end
111
137
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobileesp_converted
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-12 00:00:00.000000000 Z
13
+ date: 2012-11-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pry
17
- requirement: &23808700 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,31 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *23808700
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rake
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
26
47
  - !ruby/object:Gem::Dependency
27
48
  name: minitest
28
- requirement: &23808240 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
29
50
  none: false
30
51
  requirements:
31
52
  - - ! '>='
@@ -33,7 +54,12 @@ dependencies:
33
54
  version: '0'
34
55
  type: :development
35
56
  prerelease: false
36
- version_requirements: *23808240
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
37
63
  description: Autoconverted version (from Java to Ruby) of MobileESP library.
38
64
  email:
39
65
  - jistr@jistr.com
@@ -67,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
93
  version: '0'
68
94
  segments:
69
95
  - 0
70
- hash: 595848370185603424
96
+ hash: -745614850810800464
71
97
  required_rubygems_version: !ruby/object:Gem::Requirement
72
98
  none: false
73
99
  requirements:
@@ -76,11 +102,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
102
  version: '0'
77
103
  segments:
78
104
  - 0
79
- hash: 595848370185603424
105
+ hash: -745614850810800464
80
106
  requirements: []
81
107
  rubyforge_project:
82
- rubygems_version: 1.8.11
108
+ rubygems_version: 1.8.23
83
109
  signing_key:
84
110
  specification_version: 3
85
111
  summary: Provides device type detection based on HTTP request headers.
86
- test_files: []
112
+ test_files:
113
+ - spec/mobileesp_converted/user_agent_info_spec.rb
114
+ - spec/spec_helper.rb