added nexus mod downloads

This commit is contained in:
2026-03-08 01:38:27 +01:00
parent 9d9ee1d229
commit 90c6b59914
8 changed files with 865 additions and 7 deletions

44
src/nexus/url.rs Normal file
View File

@@ -0,0 +1,44 @@
use url::Url;
#[derive(Debug)]
pub struct NXMUrl {
pub game: String,
pub mod_id: String,
pub file: String,
pub key: String,
pub user_id: String,
pub expires: String,
}
impl NXMUrl {
pub fn parse_url(raw: &str) -> Option<Self> {
// Example url
//nxm://skyrimspecialedition/mods/266/files/725705?key=xHxcFyx2_i5rhY1YdsSbyA&expires=1773086056&user_id=123456
let url = Url::parse(raw).ok()?;
let segs: Vec<&str> = url.path_segments()?.collect();
let game = url.host_str()?;
let mod_id = segs.get(1)?.parse().ok()?;
let file_id = segs.get(3)?.parse().ok()?;
let key = url.query_pairs().find(|(k, _)| k == "key")?.1;
let expires = url
.query_pairs()
.find(|(k, _)| k == "expires")?
.1
.parse()
.ok()?;
let user_id = url.query_pairs().find(|(k, _)| k == "user_id")?.1;
Some(Self {
game: game.to_owned(),
mod_id,
file: file_id,
key: key.to_string(),
user_id: user_id.parse().ok()?,
expires,
})
}
}