diff --git a/Cargo.toml b/Cargo.toml index 5217cb8..3ce4b4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ build = "build.rs" [dependencies] regex = "^0.2" lazy_static = "0.2.1" -clippy = { version = "0.0.121", optional = true } +clippy = { version = "0.0.133", optional = true } [dev-dependencies] uap-rust = "0.0.4" diff --git a/src/dataset.rs b/src/dataset.rs index 840d24c..fbf04ab 100644 --- a/src/dataset.rs +++ b/src/dataset.rs @@ -775,6 +775,16 @@ pub fn get_default_dataset<'a>() -> HashMap<&'a str, WootheeResult<'a>> { vendor: "", version: "".to_string(), }); + dataset.insert("trendictionbot", + WootheeResult { + name: "trendiction", + browser_type: "full", + category: "crawler", + os: "", + os_version: "".to_string(), + vendor: "", + version: "".to_string(), + }); dataset.insert("mixi", WootheeResult { name: "mixi", diff --git a/src/parser.rs b/src/parser.rs index c3e9329..4a58760 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -386,7 +386,10 @@ impl<'a> Parser<'a> { return self.populate_dataset(result, "Baiduspider"); } - if agent.contains("Yeti") && agent.contains("http://help.naver.com/robots") { + if agent.contains("Yeti") && + (agent.contains("http://help.naver.com/robots") || + agent.contains("http://help.naver.com/support/robots.html") || + agent.contains("http://naver.me/bot")) { return self.populate_dataset(result, "Yeti"); } @@ -453,6 +456,10 @@ impl<'a> Parser<'a> { return self.populate_dataset(result, "IndyLibrary"); } + if agent.contains("trendictionbot") { + return self.populate_dataset(result, "trendictionbot"); + } + false } diff --git a/tests/crawler.rs b/tests/crawler.rs index b089bfd..fd97de0 100644 --- a/tests/crawler.rs +++ b/tests/crawler.rs @@ -218,6 +218,26 @@ mod tests { assert_eq!(result.version, "UNKNOWN".to_string()); } } + match parser.parse(r#"Mozilla/5.0 (compatible; Yeti/1.1; +http://help.naver.com/support/robots.html)"#) { + None => panic!(r#"invalid parse. "Mozilla/5.0 (compatible; Yeti/1.1; +http://help.naver.com/support/robots.html)""#), + Some(result) => { + assert_eq!(result.category, "crawler".to_string()); + assert_eq!(result.name, "Naver Yeti".to_string()); + assert_eq!(result.os, "UNKNOWN".to_string()); + assert_eq!(result.os_version, "UNKNOWN".to_string()); + assert_eq!(result.version, "UNKNOWN".to_string()); + } + } + match parser.parse(r#"Mozilla/5.0 (compatible; Yeti/1.1; +http://naver.me/bot)"#) { + None => panic!(r#"invalid parse. "Mozilla/5.0 (compatible; Yeti/1.1; +http://naver.me/bot)""#), + Some(result) => { + assert_eq!(result.category, "crawler".to_string()); + assert_eq!(result.name, "Naver Yeti".to_string()); + assert_eq!(result.os, "UNKNOWN".to_string()); + assert_eq!(result.os_version, "UNKNOWN".to_string()); + assert_eq!(result.version, "UNKNOWN".to_string()); + } + } match parser.parse(r#"Mozilla/3.0 (compatible; Indy Library)"#) { None => panic!(r#"invalid parse. "Mozilla/3.0 (compatible; Indy Library)""#), Some(result) => { @@ -438,5 +458,15 @@ mod tests { assert_eq!(result.version, "UNKNOWN".to_string()); } } + match parser.parse(r#"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.0; trendictionbot0.5.0; trendiction search; http://www.trendiction.de/bot; please let us know of any problems; web at trendiction.com) Gecko/20071127 Firefox/3.0.0.11"#) { + None => panic!(r#"invalid parse. "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.0; trendictionbot0.5.0; trendiction search; http://www.trendiction.de/bot; please let us know of any problems; web at trendiction.com) Gecko/20071127 Firefox/3.0.0.11""#), + Some(result) => { + assert_eq!(result.category, "crawler".to_string()); + assert_eq!(result.name, "trendiction".to_string()); + assert_eq!(result.os, "UNKNOWN".to_string()); + assert_eq!(result.os_version, "UNKNOWN".to_string()); + assert_eq!(result.version, "UNKNOWN".to_string()); + } + } } } diff --git a/tests/smartphone_misc.rs b/tests/smartphone_misc.rs index 225e4b0..ffd5be4 100644 --- a/tests/smartphone_misc.rs +++ b/tests/smartphone_misc.rs @@ -9,9 +9,7 @@ mod tests { let parser = Parser::new(); match parser.parse(r#"Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0"#) { - None => { - panic!(r#"invalid parse. "Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0""#) - } + None => panic!(r#"invalid parse. "Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0""#), Some(result) => { assert_eq!(result.category, "smartphone".to_string()); assert_eq!(result.name, "Firefox".to_string()); @@ -22,9 +20,7 @@ mod tests { } } match parser.parse(r#"Mozilla/5.0 (Tablet; rv:26.0) Gecko/18.0 Firefox/26.0"#) { - None => { - panic!(r#"invalid parse. "Mozilla/5.0 (Tablet; rv:26.0) Gecko/18.0 Firefox/26.0""#) - } + None => panic!(r#"invalid parse. "Mozilla/5.0 (Tablet; rv:26.0) Gecko/18.0 Firefox/26.0""#), Some(result) => { assert_eq!(result.category, "smartphone".to_string()); assert_eq!(result.name, "Firefox".to_string());