diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-02-03 19:59:22 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-03-11 15:15:02 +0100 |
commit | 18de6b80d54adb4ae9658a8a11beaf804deed050 (patch) | |
tree | dc64def6fb337075a029cc03aa2e7dfb774eefe3 /libimaglink | |
parent | e6e9a1a19e856a0981c7f99ef8a4b5a9d34cf519 (diff) |
Implement: external::get_link()
Diffstat (limited to 'libimaglink')
-rw-r--r-- | libimaglink/src/external.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/libimaglink/src/external.rs b/libimaglink/src/external.rs index d30dec0b..97b7dce4 100644 --- a/libimaglink/src/external.rs +++ b/libimaglink/src/external.rs @@ -1,10 +1,26 @@ use libimagstore::store::EntryHeader; +use error::{LinkError, LinkErrorKind}; use link::{Link, Links}; use result::Result; -pub fn get_link(header: &EntryHeader) -> Result<Link> { - unimplemented!() +use toml::Value; +use toml::Table; + +pub fn get_link(header: &EntryHeader) -> Result<Option<Link>> { + let uri = header.read("imag.content.uri"); + + if uri.is_err() { + let kind = LinkErrorKind::EntryHeaderReadError; + let lerr = LinkError::new(kind, Some(Box::new(uri.err().unwrap()))); + return Err(lerr); + } + let uri = uri.unwrap(); + + match uri { + Some(Value::String(s)) => Ok(Some(Link::new(s))), + _ => Err(LinkError::new(LinkErrorKind::ExistingLinkTypeWrong, None)), + } } /// Set an external link in the header |