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 EnableVoip {
    #[serde(rename = "@Enable")]
    pub enable: bool,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum EnumMuteState {
    #[serde(rename = "NONE")]
    None,
    #[serde(rename = "UNMUTED")]
    Unmuted,
    #[serde(rename = "MUTED_LOCALLY")]
    MutedLocally,
    #[serde(rename = "MUTED_REMOTELY")]
    MutedRemotely,
    #[serde(rename = "MUTED_LOCALLY_AND_REMOTELY")]
    MutedLocallyAndRemotely,
}

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

#[derive(Debug, Serialize, Deserialize)]
pub struct GetVoipStatusResponse {
    #[serde(rename = "@Available")]
    pub available: bool,
    #[serde(rename = "@Active")]
    pub active: bool,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MuteState {
    #[serde(rename = "@State")]
    pub state: EnumMuteState,
    #[serde(rename = "@UserId")]
    pub user_id: u64,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct MuteUser {
    #[serde(rename = "@bMute")]
    pub b_mute: bool,
    #[serde(rename = "@GroupId")]
    pub group_id: String,
    #[serde(rename = "@UserId")]
    pub user_id: u64,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct QueryMuteState {
    #[serde(rename = "@GroupId")]
    pub group_id: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct QueryMuteStateResponse {
    #[serde(rename = "MuteState", default)]
    pub mute_state_array: Vec<MuteState>,
}

#[derive(Debug, Serialize, Deserialize)]
pub enum VoipStatus {
    #[serde(rename = "UNKNOWN")]
    Unknown = -1,
    #[serde(rename = "CHANNEL_DISCONNECTED")]
    ChannelDisconnected,
    #[serde(rename = "CHANNEL_CONNECTING")]
    ChannelConnecting,
    #[serde(rename = "CHANNEL_CONNECTED")]
    ChannelConnected,
    #[serde(rename = "USER_TALKING_START")]
    UserTalkingStart,
    #[serde(rename = "USER_TALKING_END")]
    UserTalkingEnd,
    #[serde(rename = "USER_MUTED_LOCALLY")]
    UserMutedLocally,
    #[serde(rename = "USER_MUTED_REMOTELY")]
    UserMutedRemotely,
    #[serde(rename = "USER_UNMUTED_LOCALLY")]
    UserUnmutedLocally,
    #[serde(rename = "USER_UNMUTED_REMOTELY")]
    UserUnmutedRemotely,
    #[serde(rename = "USER_JOINED")]
    UserJoined,
    #[serde(rename = "USER_LEFT")]
    UserLeft,
    #[serde(rename = "UNAVAILABLE")]
    Unavailable,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct VoipStatusEvent {
    #[serde(rename = "@Status")]
    pub status: VoipStatus,
    #[serde(rename = "@UserId")]
    pub user_id: u64,
}