libimagentrylink: Replace read with typed read

This commit is contained in:
Matthias Beyer 2018-01-12 16:32:18 +01:00
parent 18a6e9b64e
commit e9ae81a2ce

View file

@ -41,10 +41,10 @@ use libimagstore::storeid::IntoStoreId;
use libimagutil::debug_result::*; use libimagutil::debug_result::*;
use toml_query::read::TomlValueReadExt; use toml_query::read::TomlValueReadExt;
use toml_query::read::TomlValueReadTypeExt;
use toml_query::insert::TomlValueInsertExt; use toml_query::insert::TomlValueInsertExt;
use error::LinkErrorKind as LEK; use error::LinkErrorKind as LEK;
use error::LinkError as LE;
use error::Result; use error::Result;
use internal::InternalLinker; use internal::InternalLinker;
use module_path::ModuleEntryPath; use module_path::ModuleEntryPath;
@ -69,27 +69,23 @@ impl Link for Entry {
fn get_link_uri_from_filelockentry(&self) -> Result<Option<Url>> { fn get_link_uri_from_filelockentry(&self) -> Result<Option<Url>> {
self.get_header() self.get_header()
.read("links.external.content.url") .read_string("links.external.content.url")
.chain_err(|| LEK::EntryHeaderReadError) .chain_err(|| LEK::EntryHeaderReadError)
.and_then(|opt| match opt { .and_then(|opt| match opt {
Some(&Value::String(ref s)) => { None => Ok(None),
Some(ref s) => {
debug!("Found url, parsing: {:?}", s); debug!("Found url, parsing: {:?}", s);
Url::parse(&s[..]).chain_err(|| LEK::InvalidUri).map(Some) Url::parse(&s[..]).chain_err(|| LEK::InvalidUri).map(Some)
}, },
Some(_) => Err(LE::from_kind(LEK::LinkParserFieldTypeError)),
None => Ok(None),
}) })
} }
fn get_url(&self) -> Result<Option<Url>> { fn get_url(&self) -> Result<Option<Url>> {
match self.get_header().read("links.external.url") { match self.get_header().read_string("links.external.url")? {
Ok(Some(&Value::String(ref s))) => { None => Ok(None),
Url::parse(&s[..]) Some(ref s) => Url::parse(&s[..])
.map(Some) .map(Some)
.chain_err(|| LEK::EntryHeaderReadError) .chain_err(|| LEK::EntryHeaderReadError),
},
Ok(None) => Ok(None),
_ => Err(LE::from_kind(LEK::EntryHeaderReadError))
} }
} }