diff --git a/src/enums/ua-parser-enums.js b/src/enums/ua-parser-enums.js index 8930a27..f7dab4b 100644 --- a/src/enums/ua-parser-enums.js +++ b/src/enums/ua-parser-enums.js @@ -128,6 +128,7 @@ const Browser = Object.freeze({ TESLA: 'Tesla', TIKTOK: 'TikTok', TIZEN: 'Tizen Browser', + TWITTER: 'Twitter', UC: 'UCBrowser', UP: 'UP.Browser', VIERA: 'Viera', diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index b00a871..daa9684 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -379,6 +379,7 @@ /safari (line)\/([\w\.]+)/i, // Line App for iOS /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android /(alipay)client\/([\w\.]+)/i, // Alipay + /(twitter)(?:and| f.+e\/([\w\.]+))/i, // Twitter /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i // Chromium/Instagram/Snapchat ], [NAME, VERSION], [ /\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS @@ -521,7 +522,7 @@ /; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [ - /\b(opd2\d{3}a?) bui\//i + /\b(opd2\d{3}a?) bui/i ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [ // Vivo diff --git a/test/specs/browser-all.json b/test/specs/browser-all.json index 471cdb3..815fcc0 100644 --- a/test/specs/browser-all.json +++ b/test/specs/browser-all.json @@ -2071,5 +2071,25 @@ "version" : "12.33.0.36", "major" : "12" } + }, + { + "desc" : "Twitter", + "ua" : "Mozilla/5.0 (Linux; Android 13; CPH2531 Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.120 Mobile Safari/537.36 TwitterAndroid", + "expect" : + { + "name" : "Twitter", + "version" : "undefined", + "major" : "undefined" + } + }, + { + "desc" : "Twitter", + "ua" : "Mozilla/5.0 (iPad; CPU OS 15_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/19H12 Twitter for iPhone/10.34", + "expect" : + { + "name" : "Twitter", + "version" : "10.34", + "major" : "10" + } } ] \ No newline at end of file