@@ -1,4 +1,4 @@
|
||||
name: Rust
|
||||
name: sidm
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
Generated
+60
-60
@@ -60,9 +60,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.13.0"
|
||||
version = "2.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
|
||||
checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
@@ -78,9 +78,9 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.66"
|
||||
version = "1.2.67"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996"
|
||||
checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"jobserver",
|
||||
@@ -96,9 +96,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
||||
|
||||
[[package]]
|
||||
name = "cfg_aliases"
|
||||
version = "0.2.1"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||
checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
|
||||
|
||||
[[package]]
|
||||
name = "chacha20"
|
||||
@@ -402,9 +402,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "http-body"
|
||||
version = "1.0.1"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
|
||||
checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"http",
|
||||
@@ -412,9 +412,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "http-body-util"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
|
||||
checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-core",
|
||||
@@ -490,20 +490,6 @@ dependencies = [
|
||||
"windows-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icarus_models"
|
||||
version = "0.11.3"
|
||||
source = "git+ssh://git@git.kundeng.us/phoenix/icarus_models.git?tag=v0.11.3#859b0fb1b377370d8171e22e59893d86e41b258b"
|
||||
dependencies = [
|
||||
"josekit",
|
||||
"rand",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"time",
|
||||
"utoipa",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_collections"
|
||||
version = "2.2.0"
|
||||
@@ -586,20 +572,6 @@ dependencies = [
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idm"
|
||||
version = "0.10.1"
|
||||
dependencies = [
|
||||
"http",
|
||||
"icarus_models",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "1.1.0"
|
||||
@@ -799,9 +771,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "1.2.1"
|
||||
version = "1.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
|
||||
checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"wasi",
|
||||
@@ -1037,9 +1009,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.13.0"
|
||||
version = "1.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2"
|
||||
checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
@@ -1049,9 +1021,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.4.15"
|
||||
version = "0.4.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db"
|
||||
checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
@@ -1140,9 +1112,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.23.41"
|
||||
version = "0.23.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
|
||||
checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138"
|
||||
dependencies = [
|
||||
"aws-lc-rs",
|
||||
"once_cell",
|
||||
@@ -1322,6 +1294,20 @@ version = "2.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
||||
|
||||
[[package]]
|
||||
name = "sidm"
|
||||
version = "0.10.1"
|
||||
dependencies = [
|
||||
"http",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"simodels",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.8"
|
||||
@@ -1334,15 +1320,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "simd-adler32"
|
||||
version = "0.3.9"
|
||||
version = "0.3.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
|
||||
checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
|
||||
|
||||
[[package]]
|
||||
name = "simd_cesu8"
|
||||
version = "1.1.1"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
|
||||
checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520"
|
||||
dependencies = [
|
||||
"rustc_version",
|
||||
"simdutf8",
|
||||
@@ -1354,6 +1340,20 @@ version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
|
||||
|
||||
[[package]]
|
||||
name = "simodels"
|
||||
version = "0.11.3"
|
||||
source = "git+ssh://git@git.kundeng.us/phoenix/simodels.git?tag=v0.11.3-main-fe9d101bd0-111#fe9d101bd019f91fe8c99c29721ccb0e6e90c92c"
|
||||
dependencies = [
|
||||
"josekit",
|
||||
"rand",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"time",
|
||||
"utoipa",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.12"
|
||||
@@ -1368,9 +1368,9 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.6.4"
|
||||
version = "0.6.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
|
||||
checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.61.2",
|
||||
@@ -1390,9 +1390,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.118"
|
||||
version = "2.0.119"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
|
||||
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -1517,9 +1517,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.52.3"
|
||||
version = "1.52.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
|
||||
checksum = "317fafbbe3f02fc663dad00ea6186197de963cd4190e86a26d8d0fae095539af"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"libc",
|
||||
@@ -1698,9 +1698,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.23.4"
|
||||
version = "1.24.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53"
|
||||
checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239"
|
||||
dependencies = [
|
||||
"getrandom 0.4.3",
|
||||
"js-sys",
|
||||
@@ -2053,6 +2053,6 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.21"
|
||||
version = "1.0.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|
||||
checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
|
||||
|
||||
+5
-3
@@ -1,8 +1,10 @@
|
||||
[package]
|
||||
name = "idm"
|
||||
name = "sidm"
|
||||
version = "0.10.1"
|
||||
rust-version = "1.95"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
description = "CLI tool to download and upload music from soaricarus"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
[dependencies]
|
||||
@@ -10,7 +12,7 @@ http = { version = "1.4.2" }
|
||||
reqwest = { version = "0.13.4", features = ["json", "blocking", "multipart", "stream"] }
|
||||
serde = { version = "1.0.228", features = ["derive"] }
|
||||
serde_json = "1.0.150"
|
||||
tokio = { version = "1.52.3", features = ["full"] }
|
||||
tokio = { version = "1.52.4", features = ["full"] }
|
||||
tokio-util = { version = "0.7.18", features = ["codec"] }
|
||||
uuid = { version = "1.23.4", features = ["v4", "serde"] }
|
||||
icarus_models = { git = "ssh://git@git.kundeng.us/phoenix/icarus_models.git", tag = "v0.11.3" }
|
||||
simodels = { git = "ssh://git@git.kundeng.us/phoenix/simodels.git", tag = "v0.11.3-main-fe9d101bd0-111" }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# idm
|
||||
# sidm
|
||||
|
||||
idm (IcarusDownloadManager) is a CLI software client application that has the feature of uploading and downloading songs from the [icarus](https://git.kundeng.us/phoenix/icarus) Music Server.
|
||||
sidm (SoarIcarusDownloadManager) is a CLI software client application that has the feature of uploading and downloading songs from the [soaricarus_api](https://git.kundeng.us/phoenix/soaricarus_api) Music Server.
|
||||
|
||||
|
||||
|
||||
@@ -9,14 +9,14 @@ idm (IcarusDownloadManager) is a CLI software client application that has the fe
|
||||
Clone the repo
|
||||
|
||||
```BASH
|
||||
git clone git@git.kundeng.us:phoenix/idm.git
|
||||
git clone git@git.kundeng.us:phoenix/sidm.git
|
||||
```
|
||||
|
||||
|
||||
Build the project:
|
||||
|
||||
```BASH
|
||||
cd idm
|
||||
cd sidm
|
||||
cargo build
|
||||
```
|
||||
|
||||
@@ -24,31 +24,31 @@ cargo build
|
||||
### Downloading Song
|
||||
|
||||
```BASH
|
||||
idm download -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -b e8407fc6-edd2-44c1-993f-08dd7324d91a
|
||||
sidm download -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -b e8407fc6-edd2-44c1-993f-08dd7324d91a
|
||||
```
|
||||
|
||||
### Uploading Song with metadata
|
||||
|
||||
```BASH
|
||||
idm upload-meta -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -s /path/of/song.flac -t 1 -m /path/to/metadata/config/collection.json -ca /path/to/cover/art/image.png
|
||||
sidm upload-meta -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -s /path/of/song.flac -t 1 -m /path/to/metadata/config/collection.json -ca /path/to/cover/art/image.png
|
||||
```
|
||||
|
||||
### Uploading Song with metadata from directory
|
||||
|
||||
```BASH
|
||||
idm upload-meta -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -smca /path/where/songs/and/metadata/exists/
|
||||
sidm upload-meta -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -smca /path/where/songs/and/metadata/exists/
|
||||
```
|
||||
|
||||
### Retrieving Song in json
|
||||
|
||||
```Bash
|
||||
idm retrieve -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -rt songs
|
||||
sidm retrieve -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -rt songs
|
||||
```
|
||||
|
||||
### Deleting Song
|
||||
|
||||
```BASH
|
||||
idm delete -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -D e8407fc6-edd2-44c1-993f-08dd7324d91a
|
||||
sidm delete -u spacecadet -p stellar40 -h https://icarus.com -ha https://auth.icarus.com -D e8407fc6-edd2-44c1-993f-08dd7324d91a
|
||||
```
|
||||
|
||||
|
||||
|
||||
+4
-4
@@ -51,7 +51,7 @@ mod tests {
|
||||
assert!(false, "File does not exists: {meta_path:?}");
|
||||
}
|
||||
|
||||
match icarus_models::album::collection::parse_album(&meta_path) {
|
||||
match simodels::album::collection::parse_album(&meta_path) {
|
||||
Ok(album) => {
|
||||
for track in 1..3 {
|
||||
let directory_path = std::path::Path::new(&meta_path);
|
||||
@@ -59,17 +59,17 @@ mod tests {
|
||||
let filename: String = if track < 10 {
|
||||
String::from("track0")
|
||||
+ &track.to_string()
|
||||
+ icarus_models::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
+ simodels::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
} else {
|
||||
String::from("track")
|
||||
+ &track.to_string()
|
||||
+ icarus_models::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
+ simodels::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
};
|
||||
let disc = 1;
|
||||
match managers::commit_manager::retrieve_song(
|
||||
&album, track, disc, &directory, &filename,
|
||||
) {
|
||||
Ok(song) => match icarus_models::song::io::to_data(&song) {
|
||||
Ok(song) => match simodels::song::io::to_data(&song) {
|
||||
Ok(_) => {
|
||||
print!("Success");
|
||||
}
|
||||
|
||||
@@ -36,21 +36,21 @@ enum En {
|
||||
|
||||
#[derive(Debug)]
|
||||
struct UploadSongMembers {
|
||||
pub song: icarus_models::song::Song,
|
||||
pub coverart: icarus_models::coverart::CoverArt,
|
||||
pub token: icarus_models::token::AccessToken,
|
||||
pub album: icarus_models::album::collection::Album,
|
||||
pub song: simodels::song::Song,
|
||||
pub coverart: simodels::coverart::CoverArt,
|
||||
pub token: simodels::token::AccessToken,
|
||||
pub album: simodels::album::collection::Album,
|
||||
}
|
||||
|
||||
pub fn retrieve_song(
|
||||
album: &icarus_models::album::collection::Album,
|
||||
album: &simodels::album::collection::Album,
|
||||
track: i32,
|
||||
disc: i32,
|
||||
directory: &str,
|
||||
filename: &str,
|
||||
) -> Result<icarus_models::song::Song> {
|
||||
) -> Result<simodels::song::Song> {
|
||||
let mut found = false;
|
||||
let mut song = icarus_models::song::Song::default();
|
||||
let mut song = simodels::song::Song::default();
|
||||
|
||||
for song_i in &album.tracks {
|
||||
if song_i.track == track && song_i.disc == disc {
|
||||
@@ -58,9 +58,8 @@ pub fn retrieve_song(
|
||||
song.album = album.title.clone();
|
||||
song.album_artist = album.artist.clone();
|
||||
song.artist = track.artist.clone();
|
||||
song.audio_type = String::from(
|
||||
icarus_models::constants::file_extensions::audio::DEFAULTMUSICEXTENSION,
|
||||
);
|
||||
song.audio_type =
|
||||
String::from(simodels::constants::file_extensions::audio::DEFAULTMUSICEXTENSION);
|
||||
song.disc = track.disc;
|
||||
song.disc_count = album.disc_count;
|
||||
song.duration = track.duration as i32;
|
||||
@@ -143,13 +142,13 @@ impl CommitManager {
|
||||
])
|
||||
}
|
||||
|
||||
async fn delete_song(&self, token: &icarus_models::token::AccessToken) {
|
||||
async fn delete_song(&self, token: &simodels::token::AccessToken) {
|
||||
println!("Deleting song");
|
||||
|
||||
let mut del = syncers::delete::Delete {
|
||||
api: self.api.clone(),
|
||||
};
|
||||
let mut song = icarus_models::song::Song::default();
|
||||
let mut song = simodels::song::Song::default();
|
||||
|
||||
for arg in &self.ica_action.flags {
|
||||
let flag = &arg.flag;
|
||||
@@ -170,13 +169,13 @@ impl CommitManager {
|
||||
}
|
||||
}
|
||||
|
||||
async fn download_song(&self, token: &icarus_models::token::AccessToken) {
|
||||
async fn download_song(&self, token: &simodels::token::AccessToken) {
|
||||
println!("Downloading song");
|
||||
let dwn = self.ica_action.retrieve_flag_value(&String::from("-b"));
|
||||
let mut dwn_loader = syncers::download::Download {
|
||||
api: self.api.clone(),
|
||||
};
|
||||
let mut song = icarus_models::song::Song {
|
||||
let mut song = simodels::song::Song {
|
||||
id: uuid::Uuid::from_str(dwn.as_str()).unwrap(),
|
||||
..Default::default()
|
||||
};
|
||||
@@ -187,8 +186,8 @@ impl CommitManager {
|
||||
|
||||
song.data = o.as_bytes().to_vec();
|
||||
song.directory = String::from(".");
|
||||
song.filename = match icarus_models::song::generate_filename(
|
||||
icarus_models::types::MusicType::FlacExtension,
|
||||
song.filename = match simodels::song::generate_filename(
|
||||
simodels::types::MusicType::FlacExtension,
|
||||
true,
|
||||
) {
|
||||
Ok(filename) => filename,
|
||||
@@ -221,7 +220,7 @@ impl CommitManager {
|
||||
}
|
||||
}
|
||||
|
||||
async fn retrieve_object(&self, token: &icarus_models::token::AccessToken) {
|
||||
async fn retrieve_object(&self, token: &simodels::token::AccessToken) {
|
||||
println!("Retrieving song");
|
||||
let rt = self.ica_action.retrieve_flag_value(&String::from("-rt"));
|
||||
|
||||
@@ -250,12 +249,12 @@ impl CommitManager {
|
||||
}
|
||||
}
|
||||
|
||||
async fn parse_token(&self, api: &models::api::Api) -> icarus_models::token::AccessToken {
|
||||
async fn parse_token(&self, api: &models::api::Api) -> simodels::token::AccessToken {
|
||||
println!("Fetching token");
|
||||
|
||||
let mut usr_mgr: managers::user_manager::UserManager =
|
||||
managers::user_manager::UserManager {
|
||||
user: icarus_models::user::User::default(),
|
||||
user: simodels::user::User::default(),
|
||||
ica_action: self.ica_action.clone(),
|
||||
};
|
||||
usr_mgr.parse_user_from_actions();
|
||||
@@ -272,7 +271,7 @@ impl CommitManager {
|
||||
token.unwrap()
|
||||
}
|
||||
|
||||
async fn upload_song_with_metadata(&mut self, token: &icarus_models::token::AccessToken) {
|
||||
async fn upload_song_with_metadata(&mut self, token: &simodels::token::AccessToken) {
|
||||
println!("Uplodaring song with metadara");
|
||||
|
||||
let songpath = self.ica_action.retrieve_flag_value(&String::from("-s"));
|
||||
@@ -316,7 +315,7 @@ impl CommitManager {
|
||||
track_id: &str,
|
||||
meta_path: &String,
|
||||
cover_path: &str,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
token: &simodels::token::AccessToken,
|
||||
) -> Result<()> {
|
||||
let song_file = std::path::Path::new(&songpath);
|
||||
|
||||
@@ -327,7 +326,7 @@ impl CommitManager {
|
||||
|
||||
let pa = std::path::Path::new(&cover_path);
|
||||
|
||||
let mut cover_art = icarus_models::coverart::CoverArt {
|
||||
let mut cover_art = simodels::coverart::CoverArt {
|
||||
directory: String::from(pa.parent().unwrap().to_str().unwrap()),
|
||||
filename: String::from(pa.file_name().unwrap().to_str().unwrap()),
|
||||
..Default::default()
|
||||
@@ -339,7 +338,7 @@ impl CommitManager {
|
||||
Ok(s) => {
|
||||
println!("file name: {file_name:?}");
|
||||
|
||||
match icarus_models::album::collection::parse_album(meta_path) {
|
||||
match simodels::album::collection::parse_album(meta_path) {
|
||||
Ok(album) => {
|
||||
let filename = s.clone();
|
||||
let directory = song_file.parent().unwrap().display().to_string();
|
||||
@@ -349,9 +348,8 @@ impl CommitManager {
|
||||
println!("Directory: {:?}", s.directory);
|
||||
println!("Filename: {:?}", s.filename);
|
||||
println!("Path: {:?}", s.song_path());
|
||||
s.data = icarus_models::song::io::to_data(&s).unwrap();
|
||||
cover_art.data =
|
||||
icarus_models::coverart::io::to_data(&cover_art).unwrap();
|
||||
s.data = simodels::song::io::to_data(&s).unwrap();
|
||||
cover_art.data = simodels::coverart::io::to_data(&cover_art).unwrap();
|
||||
|
||||
let members = UploadSongMembers {
|
||||
song: s,
|
||||
@@ -448,23 +446,23 @@ impl CommitManager {
|
||||
&self,
|
||||
metadata_path: &String,
|
||||
source_directory: &str,
|
||||
) -> Result<Vec<icarus_models::song::Song>> {
|
||||
match icarus_models::album::collection::parse_album(metadata_path) {
|
||||
) -> Result<Vec<simodels::song::Song>> {
|
||||
match simodels::album::collection::parse_album(metadata_path) {
|
||||
Ok(albums) => {
|
||||
let mut songs: Vec<icarus_models::song::Song> = Vec::new();
|
||||
let mut songs: Vec<simodels::song::Song> = Vec::new();
|
||||
|
||||
for track in &albums.tracks {
|
||||
let song_filename = if track.track < 10 {
|
||||
"track0".to_owned()
|
||||
+ &track.track.to_string()
|
||||
+ icarus_models::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
+ simodels::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
} else {
|
||||
"track".to_owned()
|
||||
+ &track.track.to_string()
|
||||
+ icarus_models::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
+ simodels::constants::file_extensions::audio::DEFAULTMUSICEXTENSION
|
||||
};
|
||||
|
||||
songs.push(icarus_models::song::Song {
|
||||
songs.push(simodels::song::Song {
|
||||
title: track.title.clone(),
|
||||
artist: track.artist.clone(),
|
||||
disc: track.disc,
|
||||
@@ -491,7 +489,7 @@ impl CommitManager {
|
||||
async fn multi_target_upload(
|
||||
&mut self,
|
||||
sourcepath: &String,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
token: &simodels::token::AccessToken,
|
||||
) -> std::io::Result<()> {
|
||||
let directory_path = std::path::Path::new(&sourcepath);
|
||||
|
||||
@@ -501,7 +499,7 @@ impl CommitManager {
|
||||
|
||||
let (coverart_directory, coverart_filename) =
|
||||
self.get_coverart_dir_and_filename(sourcepath).unwrap();
|
||||
let mut cover_art = icarus_models::coverart::init::init_coverart_dir_and_filename(
|
||||
let mut cover_art = simodels::coverart::init::init_coverart_dir_and_filename(
|
||||
&coverart_directory,
|
||||
&coverart_filename,
|
||||
);
|
||||
@@ -511,10 +509,10 @@ impl CommitManager {
|
||||
let host = self.ica_action.retrieve_flag_value(&String::from("-h"));
|
||||
up.set_api(&host);
|
||||
|
||||
cover_art.data = icarus_models::coverart::io::to_data(&cover_art).unwrap();
|
||||
cover_art.data = simodels::coverart::io::to_data(&cover_art).unwrap();
|
||||
|
||||
match self.get_songs(&metadatapath, sourcepath) {
|
||||
Ok(sngs) => match icarus_models::album::collection::parse_album(&metadatapath) {
|
||||
Ok(sngs) => match simodels::album::collection::parse_album(&metadatapath) {
|
||||
Ok(album) => {
|
||||
for song in sngs {
|
||||
let members = UploadSongMembers {
|
||||
@@ -595,15 +593,14 @@ impl CommitManager {
|
||||
index += 1;
|
||||
}
|
||||
|
||||
if extension == icarus_models::constants::file_extensions::audio::WAVEXTENSION[1..]
|
||||
|| extension
|
||||
== icarus_models::constants::file_extensions::audio::FLACEXTENSION[1..]
|
||||
if extension == simodels::constants::file_extensions::audio::WAVEXTENSION[1..]
|
||||
|| extension == simodels::constants::file_extensions::audio::FLACEXTENSION[1..]
|
||||
{
|
||||
return En::SongFile;
|
||||
} else if extension == "json" {
|
||||
return En::MetadataFile;
|
||||
} else if extension
|
||||
== icarus_models::constants::file_extensions::image::JPGEXTENSION[1..]
|
||||
== simodels::constants::file_extensions::image::JPGEXTENSION[1..]
|
||||
|| extension == "jpeg"
|
||||
|| extension == "png"
|
||||
{
|
||||
|
||||
@@ -7,20 +7,20 @@ mod response {
|
||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
||||
pub struct Response {
|
||||
pub message: String,
|
||||
pub data: Vec<icarus_models::login_result::LoginResult>,
|
||||
pub data: Vec<simodels::login_result::LoginResult>,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct TokenManager {
|
||||
pub user: icarus_models::user::User,
|
||||
pub user: simodels::user::User,
|
||||
pub api: models::api::Api,
|
||||
}
|
||||
|
||||
impl Default for TokenManager {
|
||||
fn default() -> Self {
|
||||
let mut token = TokenManager {
|
||||
user: icarus_models::user::User::default(),
|
||||
user: simodels::user::User::default(),
|
||||
api: models::api::Api::default(),
|
||||
};
|
||||
token.init();
|
||||
@@ -30,13 +30,13 @@ impl Default for TokenManager {
|
||||
}
|
||||
|
||||
impl TokenManager {
|
||||
pub async fn request_token(&self) -> Result<icarus_models::token::AccessToken, std::io::Error> {
|
||||
pub async fn request_token(&self) -> Result<simodels::token::AccessToken, std::io::Error> {
|
||||
println!("Sending request for a token");
|
||||
|
||||
let url = self.retrieve_url();
|
||||
println!("URL: {url}");
|
||||
|
||||
let mut token = icarus_models::token::AccessToken {
|
||||
let mut token = simodels::token::AccessToken {
|
||||
user_id: uuid::Uuid::nil(),
|
||||
username: String::new(),
|
||||
token: String::new(),
|
||||
|
||||
@@ -4,12 +4,12 @@ use crate::models::{self};
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
pub struct UserManager {
|
||||
pub user: icarus_models::user::User,
|
||||
pub user: simodels::user::User,
|
||||
pub ica_action: models::icarus_action::IcarusAction,
|
||||
}
|
||||
|
||||
impl UserManager {
|
||||
pub fn retrieve_user(&self) -> icarus_models::user::User {
|
||||
pub fn retrieve_user(&self) -> simodels::user::User {
|
||||
self.user.clone()
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ fn retrieve_url_with_id(api: &models::api::Api, id: &uuid::Uuid) -> String {
|
||||
}
|
||||
|
||||
pub async fn auth_header(
|
||||
token: &icarus_models::token::AccessToken,
|
||||
token: &simodels::token::AccessToken,
|
||||
) -> Result<(http::HeaderName, http::HeaderValue), http::header::InvalidHeaderValue> {
|
||||
match http::HeaderValue::from_str(&token.bearer_token()) {
|
||||
Ok(auth_value) => Ok((reqwest::header::AUTHORIZATION, auth_value)),
|
||||
|
||||
@@ -13,8 +13,8 @@ mod response {
|
||||
pub mod delete_song {
|
||||
#[derive(Debug, serde::Deserialize)]
|
||||
pub struct SongAndCoverArt {
|
||||
pub song: icarus_models::song::Song,
|
||||
pub coverart: icarus_models::coverart::CoverArt,
|
||||
pub song: simodels::song::Song,
|
||||
pub coverart: simodels::coverart::CoverArt,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Deserialize)]
|
||||
@@ -28,10 +28,9 @@ mod response {
|
||||
impl Delete {
|
||||
pub async fn delete_song(
|
||||
&mut self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
song: &icarus_models::song::Song,
|
||||
) -> Result<(icarus_models::song::Song, icarus_models::coverart::CoverArt), std::io::Error>
|
||||
{
|
||||
token: &simodels::token::AccessToken,
|
||||
song: &simodels::song::Song,
|
||||
) -> Result<(simodels::song::Song, simodels::coverart::CoverArt), std::io::Error> {
|
||||
self.api.endpoint = "api/v2/song".to_owned();
|
||||
let url = format!("{}{}/{}", self.api.url, self.api.endpoint, song.id);
|
||||
println!("Url: {url:?}");
|
||||
|
||||
@@ -17,8 +17,8 @@ pub enum MyError {
|
||||
impl Download {
|
||||
pub async fn download_song(
|
||||
&mut self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
song: &icarus_models::song::Song,
|
||||
token: &simodels::token::AccessToken,
|
||||
song: &simodels::song::Song,
|
||||
) -> Result<String, MyError> {
|
||||
self.api.endpoint = String::from("song/download");
|
||||
let url = syncers::common::retrieve_url(&self.api, true, &song.id);
|
||||
|
||||
@@ -13,7 +13,7 @@ mod response {
|
||||
#[derive(Debug, serde::Deserialize)]
|
||||
pub struct Response {
|
||||
pub message: String,
|
||||
pub data: Vec<icarus_models::song::Song>,
|
||||
pub data: Vec<simodels::song::Song>,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,8 +21,8 @@ mod response {
|
||||
impl RetrieveRecords {
|
||||
pub async fn get_all_songs(
|
||||
&mut self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
) -> Result<Vec<icarus_models::song::Song>, Error> {
|
||||
token: &simodels::token::AccessToken,
|
||||
) -> Result<Vec<simodels::song::Song>, Error> {
|
||||
self.api.endpoint = String::from("api/v2/song/all");
|
||||
let url = format!("{}{}", self.api.url, self.api.endpoint);
|
||||
let access_token = token.bearer_token();
|
||||
|
||||
+10
-10
@@ -40,8 +40,8 @@ mod response {
|
||||
impl Upload {
|
||||
pub async fn queue_song(
|
||||
&self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
song: &icarus_models::song::Song,
|
||||
token: &simodels::token::AccessToken,
|
||||
song: &simodels::song::Song,
|
||||
) -> Result<uuid::Uuid, reqwest::Error> {
|
||||
let songpath = song.song_path().unwrap();
|
||||
let file = tokio::fs::File::open(&songpath).await.unwrap();
|
||||
@@ -92,7 +92,7 @@ impl Upload {
|
||||
|
||||
pub async fn link_user_to_queued_song(
|
||||
&self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
token: &simodels::token::AccessToken,
|
||||
queued_song_id: &uuid::Uuid,
|
||||
) -> Result<(), reqwest::Error> {
|
||||
let endpoint = String::from("api/v2/song/queue/link");
|
||||
@@ -123,9 +123,9 @@ impl Upload {
|
||||
|
||||
pub async fn queue_metadata(
|
||||
&self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
album: &icarus_models::album::collection::Album,
|
||||
song: &icarus_models::song::Song,
|
||||
token: &simodels::token::AccessToken,
|
||||
album: &simodels::album::collection::Album,
|
||||
song: &simodels::song::Song,
|
||||
queued_song_id: &uuid::Uuid,
|
||||
) -> Result<uuid::Uuid, reqwest::Error> {
|
||||
let endpoint = String::from("api/v2/song/metadata/queue");
|
||||
@@ -173,8 +173,8 @@ impl Upload {
|
||||
|
||||
pub async fn queue_coverart(
|
||||
&self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
coverart: &icarus_models::coverart::CoverArt,
|
||||
token: &simodels::token::AccessToken,
|
||||
coverart: &simodels::coverart::CoverArt,
|
||||
) -> Result<uuid::Uuid, reqwest::Error> {
|
||||
let coverartpath = coverart.get_path().unwrap();
|
||||
let file = tokio::fs::File::open(&coverartpath).await.unwrap();
|
||||
@@ -231,7 +231,7 @@ impl Upload {
|
||||
|
||||
pub async fn link_queued_song_to_queued_coverart(
|
||||
&self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
token: &simodels::token::AccessToken,
|
||||
queued_song_id: &uuid::Uuid,
|
||||
queued_coverart_id: &uuid::Uuid,
|
||||
) -> Result<(), reqwest::Error> {
|
||||
@@ -263,7 +263,7 @@ impl Upload {
|
||||
|
||||
pub async fn update_queued_song_status(
|
||||
&self,
|
||||
token: &icarus_models::token::AccessToken,
|
||||
token: &simodels::token::AccessToken,
|
||||
queued_song_id: &uuid::Uuid,
|
||||
status: &str,
|
||||
) -> Result<(), reqwest::Error> {
|
||||
|
||||
Reference in New Issue
Block a user