Song to_data change (#62)
All checks were successful
Rust Build / Check (pull_request) Successful in 35s
Release Tagging / release (pull_request) Successful in 43s
Rust Build / Test Suite (pull_request) Successful in 46s
Rust Build / Rustfmt (pull_request) Successful in 33s
Rust Build / build (pull_request) Successful in 33s
Rust Build / Clippy (pull_request) Successful in 50s

Reviewed-on: #62
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
2025-10-11 19:02:01 +00:00
committed by phoenix
parent 00cada74e2
commit d7c078d95a
2 changed files with 24 additions and 24 deletions

View File

@@ -1,4 +1,4 @@
use std::io::{Read, Write}; use std::io::Write;
use rand::Rng; use rand::Rng;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -90,26 +90,6 @@ impl Song {
} }
} }
// TODO: Make this available as a function
pub fn to_data(&self) -> Result<Vec<u8>, std::io::Error> {
let path_result = self.song_path();
match path_result {
Ok(path) => {
let mut file = std::fs::File::open(path)?;
let mut buffer: Vec<u8> = Vec::new();
file.read_to_end(&mut buffer)?;
if buffer.is_empty() {
Err(std::io::Error::other("File is empty"))
} else {
Ok(buffer)
}
}
Err(er) => Err(er),
}
}
// TODO: Make this available as a function // TODO: Make this available as a function
pub fn generate_filename(&self, typ: types::MusicTypes, randomize: bool) -> String { pub fn generate_filename(&self, typ: types::MusicTypes, randomize: bool) -> String {
let mut filename: String = String::new(); let mut filename: String = String::new();
@@ -172,6 +152,8 @@ impl Song {
/// I/O operations for songs /// I/O operations for songs
pub mod io { pub mod io {
use std::io::Read;
/// Copies a song using the source song's data /// Copies a song using the source song's data
pub fn copy_song( pub fn copy_song(
song_source: &super::Song, song_source: &super::Song,
@@ -201,4 +183,22 @@ pub mod io {
Err(err) => Err(err), Err(err) => Err(err),
} }
} }
/// Gets the raw file data of a song from the filesystem
pub fn to_data(song: &super::Song) -> Result<Vec<u8>, std::io::Error> {
match song.song_path() {
Ok(path) => {
let mut file = std::fs::File::open(path)?;
let mut buffer: Vec<u8> = Vec::new();
file.read_to_end(&mut buffer)?;
if buffer.is_empty() {
Err(std::io::Error::other("File is empty"))
} else {
Ok(buffer)
}
}
Err(er) => Err(er),
}
}
} }

View File

@@ -61,7 +61,7 @@ mod song_tests {
Ok(buffer) => { Ok(buffer) => {
assert_eq!(buffer.is_empty(), false); assert_eq!(buffer.is_empty(), false);
match song.to_data() { match song::io::to_data(&song) {
Ok(song_data) => { Ok(song_data) => {
println!("Both files match"); println!("Both files match");
assert_eq!(buffer, song_data); assert_eq!(buffer, song_data);
@@ -111,7 +111,7 @@ mod song_tests {
println!("Directory: {:?}", song_cpy.directory); println!("Directory: {:?}", song_cpy.directory);
println!("File to be created: {:?}", song_cpy.filename); println!("File to be created: {:?}", song_cpy.filename);
match song::copy_song(&song, &mut song_cpy) { match song::io::copy_song(&song, &mut song_cpy) {
Ok(_) => {} Ok(_) => {}
Err(err) => { Err(err) => {
assert!(false, "Error copying song: Error: {err:?}") assert!(false, "Error copying song: Error: {err:?}")
@@ -131,7 +131,7 @@ mod song_tests {
..Default::default() ..Default::default()
}; };
match song::copy_song(&song, &mut copied_song) { match song::io::copy_song(&song, &mut copied_song) {
Ok(_) => {} Ok(_) => {}
Err(err) => { Err(err) => {
assert!(false, "Error: {err:?}") assert!(false, "Error: {err:?}")