aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils.rs
diff options
context:
space:
mode:
authorNathan2017-07-23 12:46:34 -0400
committerNathan2017-07-23 12:46:34 -0400
commit237a0be7f0ca4d7dceca1c9e43391381593064fb (patch)
treedd4b55cc004c5ea28d1c7d4b6687de7376470ca6 /src/utils.rs
parentd1c2572a0cb2882b2661dafac0631e5888144dce (diff)
downloadpodcast-237a0be7f0ca4d7dceca1c9e43391381593064fb.tar.bz2
Cleanup and error handling
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/utils.rs b/src/utils.rs
index 5a6342b..a3d7260 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -2,6 +2,7 @@ use std::collections::BTreeSet;
use std::env;
use std::fs;
use std::path::PathBuf;
+use std::num::ParseIntError;
pub fn already_downloaded(dir: &str) -> BTreeSet<String> {
@@ -15,12 +16,9 @@ pub fn already_downloaded(dir: &str) -> BTreeSet<String> {
if let Ok(entry) = entry {
match entry.file_name().into_string() {
Ok(val) => {
- // TODO There has to be a better way to do this...later
- result.insert(String::from(
- val.trim_right_matches(".mp3")
- .trim_right_matches(".m4a")
- .trim_right_matches(".ogg"),
- ));
+ let name = String::from(val);
+ let index = name.find('.').unwrap();
+ result.insert(String::from(&name[0..index]));
}
Err(_) => {
println!(
@@ -62,7 +60,7 @@ pub fn get_sub_file() -> PathBuf {
}
}
-pub fn parse_download_episodes(e_search: &str) -> Vec<usize> {
+pub fn parse_download_episodes(e_search: &str) -> Result<Vec<usize>, ParseIntError> {
let input = String::from(e_search);
let mut ranges = Vec::<(usize, usize)>::new();
let mut elements = Vec::<usize>::new();
@@ -75,7 +73,7 @@ pub fn parse_download_episodes(e_search: &str) -> Vec<usize> {
.collect();
ranges.push((range[0], range[1]));
} else {
- elements.push(elem.parse::<usize>().unwrap());
+ elements.push(elem.parse::<usize>()?);
}
}
@@ -86,5 +84,5 @@ pub fn parse_download_episodes(e_search: &str) -> Vec<usize> {
}
}
elements.dedup();
- elements
+ Ok(elements)
}