summaryrefslogtreecommitdiffstats
path: root/libimaglink
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-02-03 19:59:22 +0100
committerMatthias Beyer <mail@beyermatthias.de>2016-03-11 15:15:02 +0100
commit18de6b80d54adb4ae9658a8a11beaf804deed050 (patch)
treedc64def6fb337075a029cc03aa2e7dfb774eefe3 /libimaglink
parente6e9a1a19e856a0981c7f99ef8a4b5a9d34cf519 (diff)
Implement: external::get_link()
Diffstat (limited to 'libimaglink')
-rw-r--r--libimaglink/src/external.rs20
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