fc69ae30ab
* feat: depot api downloads * feat: frontend fixes and experimental webview store * feat: sync downloader * feat: cleanup and fixes * feat: encrypted database and fixed resuming * feat: launch option selector * fix: autostart when no options * fix: clippy * fix: clippy x2 * feat: executor launch * feat: executor launch * feat: not installed error handling * feat: better offline handling * feat: dependency popup * fix: cancelation and resuming issues * feat: dedup by platform * feat: new ui for additional components and fix dl manager clog * feat: auto-queue dependencies * feat: depot scanning and ranking * feat: new library fetching stack * In-app store page (Windows + macOS) (#176) * feat: async store loading * feat: fix overscroll behaviour * fix: query params in server protocol * fix: clippy
47 lines
1.1 KiB
Rust
47 lines
1.1 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use std::path::PathBuf;
|
|
|
|
#[derive(Debug, Clone, Serialize)]
|
|
// Drops go in buckets
|
|
pub struct DownloadDrop {
|
|
pub index: usize,
|
|
pub filename: String,
|
|
pub path: PathBuf,
|
|
pub start: usize,
|
|
pub length: usize,
|
|
pub checksum: String,
|
|
pub permissions: u32,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize)]
|
|
pub struct DownloadBucket {
|
|
pub game_id: String,
|
|
pub version: String,
|
|
pub drops: Vec<DownloadDrop>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
pub struct DropValidateContext {
|
|
pub index: usize,
|
|
pub offset: usize,
|
|
pub path: PathBuf,
|
|
pub checksum: String,
|
|
pub length: usize,
|
|
}
|
|
|
|
impl From<DownloadBucket> for Vec<DropValidateContext> {
|
|
fn from(value: DownloadBucket) -> Self {
|
|
value
|
|
.drops
|
|
.into_iter()
|
|
.map(|e| DropValidateContext {
|
|
index: e.index,
|
|
offset: e.start,
|
|
path: e.path,
|
|
checksum: e.checksum,
|
|
length: e.length,
|
|
})
|
|
.collect()
|
|
}
|
|
}
|