diff --git a/src/constants.js b/src/constants.js index 6480e1b..18ef699 100644 --- a/src/constants.js +++ b/src/constants.js @@ -52,6 +52,7 @@ export const BROWSER_ALIASES_MAP = { Safari: 'safari', Sailfish: 'sailfish', 'Samsung Internet for Android': 'samsung_internet', + SlackBot: 'slackbot', SeaMonkey: 'seamonkey', Sleipnir: 'sleipnir', 'Sogou Browser': 'sogou', @@ -120,6 +121,7 @@ export const BROWSER_MAP = { sailfish: 'Sailfish', samsung_internet: 'Samsung Internet for Android', seamonkey: 'SeaMonkey', + slackbot: 'SlackBot', sleipnir: 'Sleipnir', sogou: 'Sogou Browser', swing: 'Swing', diff --git a/src/parser-browsers.js b/src/parser-browsers.js index a00dbeb..e65dd79 100644 --- a/src/parser-browsers.js +++ b/src/parser-browsers.js @@ -361,6 +361,23 @@ const browsersList = [ }, }, + /* SlackBot */ + { + test: [/slackbot/i, /slack-imgProxy/i], + describe(ua) { + const browser = { + name: 'SlackBot', + }; + const version = Utils.getFirstMatch(/slackbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(/slack-imgproxy\s+(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + /* YahooSlurp */ { test: [/yahoo!?[\s/]*slurp/i], diff --git a/src/parser-platforms.js b/src/parser-platforms.js index 74889a5..de846d4 100644 --- a/src/parser-platforms.js +++ b/src/parser-platforms.js @@ -227,6 +227,17 @@ export default [ }, }, + /* SlackBot */ + { + test: [/slackbot/i, /slack-imgProxy/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Slack', + }; + }, + }, + /* Yahoo! Slurp */ { test: [/yahoo/i], diff --git a/test/acceptance/useragentstrings.yml b/test/acceptance/useragentstrings.yml index 8f99243..8093d68 100644 --- a/test/acceptance/useragentstrings.yml +++ b/test/acceptance/useragentstrings.yml @@ -2969,6 +2969,39 @@ type: "bot" vendor: "Meta" engine: {} + SlackBot: + - + ua: "Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)" + spec: + browser: + name: "SlackBot" + version: "1.0" + os: {} + platform: + type: "bot" + vendor: "Slack" + engine: {} + - + ua: "Slackbot 1.0(+https://api.slack.com/robots)" + spec: + browser: + name: "SlackBot" + os: {} + platform: + type: "bot" + vendor: "Slack" + engine: {} + - + ua: "Slack-ImgProxy 0.19 (+https://api.slack.com/robots)" + spec: + browser: + name: "SlackBot" + version: "0.19" + os: {} + platform: + type: "bot" + vendor: "Slack" + engine: {} YahooSlurp: - ua: "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)"