diff --git a/src/module/helpers/header/mod.rs b/src/module/helpers/header/mod.rs index febdd1c3..0d4ba67d 100644 --- a/src/module/helpers/header/mod.rs +++ b/src/module/helpers/header/mod.rs @@ -4,3 +4,35 @@ pub mod tags; +pub mod data { + use std::ops::Deref; + use storage::file::header::data::FileHeaderData as FHD; + + pub fn get_url_from_header(header: &FHD) -> Option { + match header { + &FHD::Map{keys: ref ks} => { + let mut keys : Vec = ks.clone(); + keys.iter().find(|k| { + match k.deref() { + &FHD::Key{name: ref n, value: ref v} => n == "URL", + _ => false + } + }).and_then(|urlkey| { + match urlkey.deref().clone() { + FHD::Text(s) => Some(s), + _ => { + warn!("Malformed Header Data: Expected Text, found non-Text"); + None + }, + } + }) + }, + _ => { + warn!("Malformed Header Data: Expected Map, found non-Map"); + None + } + } + } + +} + diff --git a/src/module/helpers/header/tags.rs b/src/module/helpers/header/tags.rs index 2ad2e61b..85f49976 100644 --- a/src/module/helpers/header/tags.rs +++ b/src/module/helpers/header/tags.rs @@ -63,6 +63,5 @@ pub mod data { tags } - }