origin-sdk 0.2.0

A Rust implementation of the Origin SDK, which is used in games to communicate with the EA Desktop client.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct AreChunksInstalled {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "ChunkIds", default)]
    pub chunk_ids: Vec<i32>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct AreChunksInstalledResponse {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "@Installed")]
    pub installed: bool,
    #[serde(rename = "ChunkIds", default)]
    pub chunk_ids: Vec<i32>,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum ChunkState {
    #[serde(rename = "UNKNOWN")]
    Unknown,
    #[serde(rename = "PAUSED")]
    Paused,
    #[serde(rename = "QUEUED")]
    Queued,
    #[serde(rename = "ERROR")]
    Error,
    #[serde(rename = "DOWNLOADING")]
    Downloading,
    #[serde(rename = "INSTALLING")]
    Installing,
    #[serde(rename = "INSTALLED")]
    Installed,
    #[serde(rename = "BUSY")]
    Busy,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ChunkStatus {
    #[serde(rename = "@ChunkId")]
    pub chunk_id: i32,
    #[serde(rename = "@Name")]
    pub name: String,
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "@Type")]
    pub r#type: ChunkType,
    #[serde(rename = "@State")]
    pub state: ChunkState,
    #[serde(rename = "@Progress")]
    pub progress: f32,
    #[serde(rename = "@Size")]
    pub size: u64,
    #[serde(rename = "@ChunkETA")]
    pub chunk_eta: i32,
    #[serde(rename = "@TotalETA")]
    pub total_eta: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum ChunkType {
    #[serde(rename = "UNKNOWN")]
    Unknown,
    #[serde(rename = "REQUIRED")]
    Required,
    #[serde(rename = "RECOMMENDED")]
    Recommended,
    #[serde(rename = "NORMAL")]
    Normal,
    #[serde(rename = "ONDEMAND")]
    Ondemand,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CreateChunk {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "Files", default)]
    pub files: Vec<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CreateChunkResponse {
    #[serde(rename = "@ChunkId")]
    pub chunk_id: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct GetChunkPriority {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct GetChunkPriorityResponse {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "ChunkIds", default)]
    pub chunk_ids: Vec<i32>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct IsFileDownloaded {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "@Filepath")]
    pub filepath: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct IsFileDownloadedResponse {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "@Filepath")]
    pub filepath: String,
    #[serde(rename = "@Downloaded")]
    pub downloaded: bool,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct IsProgressiveInstallationAvailable {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct IsProgressiveInstallationAvailableResponse {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "@Available")]
    pub available: bool,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct QueryChunkFiles {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "@ChunkId")]
    pub chunk_id: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct QueryChunkFilesResponse {
    #[serde(rename = "Files", default)]
    pub files: Vec<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct QueryChunkStatus {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct QueryChunkStatusResponse {
    #[serde(rename = "ChunkStatus", default)]
    pub chunk_status: Vec<ChunkStatus>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SetChunkPriority {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
    #[serde(rename = "ChunkIds", default)]
    pub chunk_ids: Vec<i32>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SetDownloaderUtilization {
    #[serde(rename = "@Utilization")]
    pub utilization: f32,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct StartDownload {
    #[serde(rename = "@ItemId")]
    pub item_id: String,
}