use chrono::Utc; use serde::{Deserialize, Serialize}; use std::borrow::Cow; #[derive(Debug, Serialize, Deserialize)] pub struct UserResponse { pub username: String, } #[derive(Debug, Serialize, Deserialize)] pub struct RegisterRequest { pub email: String, pub username: String, pub password: String, } #[derive(Debug, Serialize, Deserialize)] pub struct RegisterResponse { pub session: String, } #[derive(Debug, Serialize, Deserialize)] pub struct LoginRequest { pub username: String, pub password: String, } #[derive(Debug, Serialize, Deserialize)] pub struct LoginResponse { pub session: String, } #[derive(Debug, Serialize, Deserialize)] pub struct AddHistoryRequest { pub id: String, pub timestamp: chrono::DateTime, pub data: String, pub hostname: String, } #[derive(Debug, Serialize, Deserialize)] pub struct CountResponse { pub count: i64, } #[derive(Debug, Serialize, Deserialize)] pub struct SyncHistoryRequest { pub sync_ts: chrono::DateTime, pub history_ts: chrono::DateTime, pub host: String, } #[derive(Debug, Serialize, Deserialize)] pub struct SyncHistoryResponse { pub history: Vec, } #[derive(Debug, Serialize, Deserialize)] pub struct ErrorResponse<'a> { pub reason: Cow<'a, str>, } #[derive(Debug, Serialize, Deserialize)] pub struct IndexResponse { pub homage: String, pub version: String, } // Doubled up with the history sync stuff, because atm we need to support BOTH. // People are still running old clients, and in some cases _very_ old clients. #[derive(Debug, Serialize, Deserialize)] pub enum AddEventRequest { Create(AddHistoryRequest), Delete { id: String, timestamp: chrono::DateTime, hostname: chrono::DateTime, // When we delete a history item, we push up an event marking its client // id as being deleted. history_id: String, }, } #[derive(Debug, Serialize, Deserialize)] pub struct SyncEventRequest { pub sync_ts: chrono::DateTime, pub event_ts: chrono::DateTime, pub host: String, } #[derive(Debug, Serialize, Deserialize)] pub struct SyncEventResponse { pub events: Vec, }