new logic-derive Command macro submits each command to inventory, manager decodes by vint type. titan-derive loses tagged enums since nothing uses them now. rest of the diff is rustfmt.
73 lines
2 KiB
Rust
73 lines
2 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use crate::error::RpcResult;
|
|
use crate::game::AccountRef;
|
|
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct DeviceInfo {
|
|
#[serde(default)]
|
|
pub udid: Option<String>,
|
|
#[serde(default)]
|
|
pub open_udid: Option<String>,
|
|
#[serde(default)]
|
|
pub device: Option<String>,
|
|
#[serde(default)]
|
|
pub os_version: Option<String>,
|
|
#[serde(default)]
|
|
pub android: bool,
|
|
#[serde(default)]
|
|
pub preferred_language: String,
|
|
#[serde(default)]
|
|
pub client_major_version: i32,
|
|
#[serde(default)]
|
|
pub client_minor_version: i32,
|
|
#[serde(default)]
|
|
pub client_build: i32,
|
|
#[serde(default)]
|
|
pub resource_sha: Option<String>,
|
|
}
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct Session {
|
|
pub account: AccountRef,
|
|
pub pass_token: String,
|
|
pub session_count: i32,
|
|
pub play_time_seconds: i32,
|
|
pub days_since_started_playing: i32,
|
|
pub account_created_date: String,
|
|
pub server_time: String,
|
|
}
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
#[serde(tag = "outcome", rename_all = "snake_case")]
|
|
pub enum LoginOutcome {
|
|
Accepted(Session),
|
|
Rejected {
|
|
error_code: i32,
|
|
message: Option<String>,
|
|
},
|
|
}
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
#[serde(tag = "op", rename_all = "snake_case")]
|
|
pub enum AuthRequest {
|
|
Login {
|
|
account: AccountRef,
|
|
pass_token: Option<String>,
|
|
device: DeviceInfo,
|
|
},
|
|
Resolve {
|
|
account: AccountRef,
|
|
},
|
|
}
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
#[serde(tag = "result", rename_all = "snake_case")]
|
|
pub enum AuthResponse {
|
|
Login(LoginOutcome),
|
|
Resolved { known: bool },
|
|
}
|
|
#[async_trait::async_trait]
|
|
pub trait AuthApi: Send + Sync + 'static {
|
|
async fn login(
|
|
&self,
|
|
account: AccountRef,
|
|
pass_token: Option<String>,
|
|
device: DeviceInfo,
|
|
) -> RpcResult<LoginOutcome>;
|
|
async fn resolve(&self, account: AccountRef) -> RpcResult<bool>;
|
|
}
|