From 2fa7c464f019f67c5c0494aaf5ac0f5ecc1ee7a7 Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Tue, 16 Jan 2018 12:03:31 -0500 Subject: Updated dependencies and added avct/uasurfer (#8089) * Updated dependencies and added avct/uasurfer * Added uasurfer to NOTICE.txt --- vendor/github.com/avct/uasurfer/device.go | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 vendor/github.com/avct/uasurfer/device.go (limited to 'vendor/github.com/avct/uasurfer/device.go') diff --git a/vendor/github.com/avct/uasurfer/device.go b/vendor/github.com/avct/uasurfer/device.go new file mode 100644 index 000000000..70c00b112 --- /dev/null +++ b/vendor/github.com/avct/uasurfer/device.go @@ -0,0 +1,60 @@ +package uasurfer + +import ( + "strings" +) + +func (u *UserAgent) evalDevice(ua string) { + switch { + + case u.OS.Platform == PlatformWindows || u.OS.Platform == PlatformMac || u.OS.Name == OSChromeOS: + if strings.Contains(ua, "mobile") || strings.Contains(ua, "touch") { + u.DeviceType = DeviceTablet // windows rt, linux haxor tablets + return + } + u.DeviceType = DeviceComputer + + case u.OS.Platform == PlatformiPad || u.OS.Platform == PlatformiPod || strings.Contains(ua, "tablet") || strings.Contains(ua, "kindle/") || strings.Contains(ua, "playbook"): + u.DeviceType = DeviceTablet + + case u.OS.Platform == PlatformiPhone || u.OS.Platform == PlatformBlackberry || strings.Contains(ua, "phone"): + u.DeviceType = DevicePhone + + // long list of smarttv and tv dongle identifiers + case strings.Contains(ua, "tv") || strings.Contains(ua, "crkey") || strings.Contains(ua, "googletv") || strings.Contains(ua, "aftb") || strings.Contains(ua, "adt-") || strings.Contains(ua, "roku") || strings.Contains(ua, "viera") || strings.Contains(ua, "aquos") || strings.Contains(ua, "dtv") || strings.Contains(ua, "appletv") || strings.Contains(ua, "smarttv") || strings.Contains(ua, "tuner") || strings.Contains(ua, "smart-tv") || strings.Contains(ua, "hbbtv") || strings.Contains(ua, "netcast") || strings.Contains(ua, "vizio"): + u.DeviceType = DeviceTV + + case u.OS.Name == OSAndroid: + // android phones report as "mobile", android tablets should not but often do -- http://android-developers.blogspot.com/2010/12/android-browser-user-agent-issues.html + if strings.Contains(ua, "mobile") { + u.DeviceType = DevicePhone + return + } + + if strings.Contains(ua, "tablet") || strings.Contains(ua, "nexus 7") || strings.Contains(ua, "nexus 9") || strings.Contains(ua, "nexus 10") || strings.Contains(ua, "xoom") { + u.DeviceType = DeviceTablet + return + } + + u.DeviceType = DevicePhone // default to phone + + case u.OS.Platform == PlatformPlaystation || u.OS.Platform == PlatformXbox || u.OS.Platform == PlatformNintendo: + u.DeviceType = DeviceConsole + + case strings.Contains(ua, "glass") || strings.Contains(ua, "watch") || strings.Contains(ua, "sm-v"): + u.DeviceType = DeviceWearable + + // specifically above "mobile" string check as Kindle Fire tablets report as "mobile" + case u.Browser.Name == BrowserSilk || u.OS.Name == OSKindle && !strings.Contains(ua, "sd4930ur"): + u.DeviceType = DeviceTablet + + case strings.Contains(ua, "mobile") || strings.Contains(ua, "touch") || strings.Contains(ua, " mobi") || strings.Contains(ua, "webos"): //anything "mobile"/"touch" that didn't get captured as tablet, console or wearable is presumed a phone + u.DeviceType = DevicePhone + + case u.OS.Name == OSLinux: // linux goes last since it's in so many other device types (tvs, wearables, android-based stuff) + u.DeviceType = DeviceComputer + + default: + u.DeviceType = DeviceUnknown + } +} -- cgit v1.2.3-1-g7c22