diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-02-23 11:50:42 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-03-11 15:15:02 +0100 |
commit | 695ee9df9bc24e2cb6f89a49c408fb905e25d2da (patch) | |
tree | 8917424be98af942a7d59f8de6b6cf7329df96e8 /libimaglink | |
parent | cb288eb868468027e01887a03b2e29039059e268 (diff) |
Add (external) link validation
Diffstat (limited to 'libimaglink')
-rw-r--r-- | libimaglink/Cargo.toml | 1 | ||||
-rw-r--r-- | libimaglink/src/external.rs | 9 | ||||
-rw-r--r-- | libimaglink/src/lib.rs | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/libimaglink/Cargo.toml b/libimaglink/Cargo.toml index 22d20f61..54c3b15a 100644 --- a/libimaglink/Cargo.toml +++ b/libimaglink/Cargo.toml @@ -6,6 +6,7 @@ authors = ["Matthias Beyer <mail@beyermatthias.de>"] [dependencies] log = "0.3.4" toml = "0.1.27" +url = "0.5.5" [dependencies.libimagstore] path = "../libimagstore" diff --git a/libimaglink/src/external.rs b/libimaglink/src/external.rs index b9168b20..59d6c0e1 100644 --- a/libimaglink/src/external.rs +++ b/libimaglink/src/external.rs @@ -8,6 +8,7 @@ use result::Result; use toml::Value; use toml::Table; +use url::Url; #[derive(PartialOrd, Ord, Eq, PartialEq, Clone, Debug)] pub struct Link { @@ -20,6 +21,10 @@ impl Link { Link { link: s } } + pub fn is_valid(&self) -> bool { + Url::parse(&self.link[..]).is_ok() + } + } #[derive(Eq, PartialEq, Clone, Debug)] @@ -41,6 +46,10 @@ impl Links { self.links.retain(|link| l != link.clone()); } + pub fn all_valid(&self) -> bool { + self.links.iter().all(|l| l.is_valid()) + } + } impl Into<String> for Link { diff --git a/libimaglink/src/lib.rs b/libimaglink/src/lib.rs index 0ea1f956..abb3a7ab 100644 --- a/libimaglink/src/lib.rs +++ b/libimaglink/src/lib.rs @@ -1,5 +1,6 @@ #[macro_use] extern crate log; extern crate toml; +extern crate url; extern crate libimagstore; |