aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-common/src/api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'atuin-common/src/api.rs')
-rw-r--r--atuin-common/src/api.rs70
1 files changed, 70 insertions, 0 deletions
diff --git a/atuin-common/src/api.rs b/atuin-common/src/api.rs
new file mode 100644
index 00000000..82ee6604
--- /dev/null
+++ b/atuin-common/src/api.rs
@@ -0,0 +1,70 @@
+use chrono::Utc;
+
+#[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<Utc>,
+ 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<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,
+ )
+ }
+}