tsk-76: Improve getting path of Song or CoverArt #81

Merged
phoenix merged 6 commits from tsk-76 into main 2025-10-24 16:51:09 +00:00
3 changed files with 25 additions and 34 deletions
Showing only changes of commit 69423d8d39 - Show all commits

View File

@@ -68,26 +68,21 @@ impl CoverArt {
/// Gets the path of the CoverArt /// Gets the path of the CoverArt
pub fn get_path(&self) -> Result<String, std::io::Error> { pub fn get_path(&self) -> Result<String, std::io::Error> {
if self.directory.is_empty() { if self.directory.is_empty() {
return Err(std::io::Error::other("Directory has not been initialized")); return Err(std::io::Error::other(
crate::constants::error::DIRECTORY_NOT_INITIALIZED,
));
} else if self.filename.is_empty() { } else if self.filename.is_empty() {
return Err(std::io::Error::other("Filename has not bee initialized")); return Err(std::io::Error::other(
crate::constants::error::FILENAME_NOT_INITIALIZED,
));
} }
let directory = &self.directory; let directory = &self.directory;
let last_index = directory.len() - 1; let last_index = directory.len() - 1;
if let Some(character) = directory.chars().nth(last_index) { match crate::util::concatenate_path(&directory, &self.filename, last_index) {
let buffer = if character != '/' { Ok(path) => Ok(path),
directory.clone() + "/" Err(err) => Err(err),
} else {
directory.clone()
};
Ok(buffer + &self.filename.clone())
} else {
Err(std::io::Error::other(
"Could not access last character of directory",
))
} }
} }
} }

View File

@@ -69,34 +69,24 @@ impl Song {
} }
} }
/// Gets the path of a Song
pub fn song_path(&self) -> Result<String, std::io::Error> { pub fn song_path(&self) -> Result<String, std::io::Error> {
if self.directory.is_empty() { if self.directory.is_empty() {
return Err(std::io::Error::other(crate::constants::error::DIRECTORY_NOT_INITIALIZED)); return Err(std::io::Error::other(
crate::constants::error::DIRECTORY_NOT_INITIALIZED,
));
} else if self.filename.is_empty() { } else if self.filename.is_empty() {
return Err(std::io::Error::other(crate::constants::error::FILENAME_NOT_INITIALIZED)); return Err(std::io::Error::other(
crate::constants::error::FILENAME_NOT_INITIALIZED,
));
} }
let directory = &self.directory; let directory = &self.directory;
let last_index = directory.len() - 1; let last_index = directory.len() - 1;
/*
if let Some(character) = directory.chars().nth(last_index) {
let buffer: String = if character != '/' {
directory.clone() + "/"
} else {
directory.clone()
};
Ok(buffer + &self.filename.clone())
} else {
Err(std::io::Error::other(
"Could not access last character of directory",
))
}
*/
match crate::util::concatenate_path(&directory, &self.filename, last_index) { match crate::util::concatenate_path(&directory, &self.filename, last_index) {
Ok(path) => Ok(path), Ok(path) => Ok(path),
Err(err) => Err(err) Err(err) => Err(err),
} }
} }

View File

@@ -1,4 +1,8 @@
pub fn concatenate_path(directory: &str, filename: &str, last_index: usize) -> Result<String, std::io::Error> { pub fn concatenate_path(
directory: &str,
filename: &str,
last_index: usize,
) -> Result<String, std::io::Error> {
if let Some(character) = directory.chars().nth(last_index) { if let Some(character) = directory.chars().nth(last_index) {
let buffer: String = if character != '/' { let buffer: String = if character != '/' {
format!("{directory}/") format!("{directory}/")
@@ -8,6 +12,8 @@ pub fn concatenate_path(directory: &str, filename: &str, last_index: usize) -> R
Ok(format!("{buffer}{filename}")) Ok(format!("{buffer}{filename}"))
} else { } else {
Err(std::io::Error::other(crate::constants::error::LAST_CHARACTER_IN_DIRECTORY)) Err(std::io::Error::other(
crate::constants::error::LAST_CHARACTER_IN_DIRECTORY,
))
} }
} }