diff options
| author | Ellie Huxtable <e@elm.sh> | 2021-04-20 17:07:11 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-20 16:07:11 +0000 |
| commit | 34888827f8a06de835cbe5833a06914f28cce514 (patch) | |
| tree | 8b56f20e50065cd2c222d5e8e067ec55cf1947a1 /src/api.rs | |
| parent | Optimise docker (#34) (diff) | |
| download | atuin-34888827f8a06de835cbe5833a06914f28cce514.zip | |
Switch to Warp + SQLx, use async, switch to Rust stable (#36)
* Switch to warp + sql, use async and stable rust
* Update CI to use stable
Diffstat (limited to '')
| -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, + ) + } +} |
