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 IgoEvent {
    #[serde(rename = "@State")]
    pub state: IgoState,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum IgoState {
    #[serde(rename = "DOWN")]
    Down,
    #[serde(rename = "UP")]
    Up,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct IgoUnavailable {
    #[serde(rename = "@Reason")]
    pub reason: i32,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum IgoWindow {
    #[serde(rename = "LOGIN")]
    Login = 1,
    #[serde(rename = "PROFILE")]
    Profile,
    #[serde(rename = "RECENT")]
    Recent,
    #[serde(rename = "FEEDBACK")]
    Feedback,
    #[serde(rename = "FRIENDS")]
    Friends,
    #[serde(rename = "FRIEND_REQUEST")]
    FriendRequest,
    #[serde(rename = "CHAT")]
    Chat,
    #[serde(rename = "COMPOSE_CHAT")]
    ComposeChat,
    #[serde(rename = "INVITE")]
    Invite,
    #[serde(rename = "ACHIEVEMENTS")]
    Achievements,
    #[serde(rename = "STORE")]
    Store,
    #[serde(rename = "CODE_REDEMPTION")]
    CodeRedemption,
    #[serde(rename = "CHECKOUT")]
    Checkout,
    #[serde(rename = "BLOCKED")]
    Blocked,
    #[serde(rename = "BROWSER")]
    Browser,
    #[serde(rename = "FIND_FRIENDS")]
    FindFriends,
    #[serde(rename = "CHANGE_AVATAR")]
    ChangeAvatar,
    #[serde(rename = "GAMEDETAILS")]
    Gamedetails,
    #[serde(rename = "BROADCAST")]
    Broadcast,
    #[serde(rename = "UPSELL")]
    Upsell,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MinimizeRequest;

#[derive(Debug, Serialize, Deserialize)]
pub struct OverlayStateChanged {
    #[serde(rename = "@State")]
    pub state: IgoState,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ShowIgo {
    #[serde(rename = "@bShow")]
    pub b_show: bool,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ShowIgoWindow {
    #[serde(rename = "@UserId")]
    pub user_id: u64,
    #[serde(rename = "@WindowId")]
    pub window_id: IgoWindow,
    #[serde(rename = "@Show", default = "ShowIgoWindow::default_show")]
    pub show: bool,
    #[serde(rename = "@Flags")]
    pub flags: i32,
    #[serde(rename = "@ContentId")]
    pub content_id: String,
    #[serde(rename = "TargetId", default)]
    pub target_id: Vec<u64>,
    #[serde(rename = "String")]
    pub string: String,
    #[serde(rename = "Args", default)]
    pub args: Vec<String>,
    #[serde(rename = "MasterTitleIds", default)]
    pub master_title_ids: Vec<String>,
    #[serde(rename = "Categories", default)]
    pub categories: Vec<String>,
    #[serde(rename = "Offers", default)]
    pub offers: Vec<String>,
}

impl ShowIgoWindow {
    #[must_use]
    pub fn default_show() -> bool {
        true
    }
}