diff options
Diffstat (limited to 'src/api.rs')
-rw-r--r-- | src/api.rs | 42 |
1 files changed, 38 insertions, 4 deletions
@@ -1,8 +1,9 @@ use chrono::Utc; -// This is shared between the client and the server, and has the data structures -// representing the requests/responses for each method. -// TODO: Properly define responses rather than using json! +#[derive(Debug, Serialize, Deserialize)] +pub struct UserResponse { + pub username: String, +} #[derive(Debug, Serialize, Deserialize)] pub struct RegisterRequest { @@ -12,12 +13,22 @@ pub struct RegisterRequest { } #[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<Utc>, @@ -31,6 +42,29 @@ pub struct CountResponse { } #[derive(Debug, Serialize, Deserialize)] -pub struct ListHistoryResponse { +pub struct SyncHistoryRequest { + pub sync_ts: chrono::DateTime<chrono::FixedOffset>, + pub history_ts: chrono::DateTime<chrono::FixedOffset>, + pub host: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct SyncHistoryResponse { pub history: Vec<String>, } + +#[derive(Debug, Serialize, Deserialize)] +pub struct ErrorResponse { + pub reason: String, +} + +impl ErrorResponse { + pub fn reply(reason: &str, status: warp::http::StatusCode) -> impl warp::Reply { + warp::reply::with_status( + warp::reply::json(&ErrorResponse { + reason: String::from(reason), + }), + status, + ) + } +} |