aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/atuin_client/api_client.rs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 18:02:55 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 18:02:55 +0200
commit0b6ca5cb8ca4c46265e08e13053260d9b5cff568 (patch)
tree9dc656095f806e6dd1177e40b9a87cf6d6f10f1b /crates/turtle/src/atuin_client/api_client.rs
parentchore(server): Remove the last remnants of the "hub" sync-server thingy (diff)
downloadatuin-0b6ca5cb8ca4c46265e08e13053260d9b5cff568.zip
feat(server): Make user stuff stateless
Diffstat (limited to 'crates/turtle/src/atuin_client/api_client.rs')
-rw-r--r--crates/turtle/src/atuin_client/api_client.rs111
1 files changed, 2 insertions, 109 deletions
diff --git a/crates/turtle/src/atuin_client/api_client.rs b/crates/turtle/src/atuin_client/api_client.rs
index 46995c9a..b4657a47 100644
--- a/crates/turtle/src/atuin_client/api_client.rs
+++ b/crates/turtle/src/atuin_client/api_client.rs
@@ -1,11 +1,10 @@
-use std::collections::HashMap;
use std::env;
use std::time::Duration;
use eyre::{Result, bail, eyre};
use reqwest::{
Response, StatusCode, Url,
- header::{AUTHORIZATION, HeaderMap, USER_AGENT},
+ header::{AUTHORIZATION, HeaderMap},
};
use tracing::debug;
@@ -15,10 +14,7 @@ use crate::atuin_common::{
tls::ensure_crypto_provider,
};
use crate::atuin_common::{
- api::{
- ChangePasswordRequest, ErrorResponse, LoginRequest, LoginResponse, MeResponse,
- RegisterResponse,
- },
+ api::{ErrorResponse, MeResponse},
record::RecordStatus,
};
@@ -63,65 +59,6 @@ fn make_url(address: &str, path: &str) -> Result<String> {
Ok(url.to_string())
}
-pub(crate) async fn register(
- address: &str,
- username: &str,
- email: &str,
- password: &str,
-) -> Result<RegisterResponse> {
- ensure_crypto_provider();
- let mut map = HashMap::new();
- map.insert("username", username);
- map.insert("email", email);
- map.insert("password", password);
-
- let url = make_url(address, &format!("/user/{username}"))?;
- let resp = reqwest::get(url).await?;
-
- if resp.status().is_success() {
- bail!("username already in use");
- }
-
- let url = make_url(address, "/register")?;
- let client = reqwest::Client::new();
- let resp = client
- .post(url)
- .header(USER_AGENT, APP_USER_AGENT)
- .header(ATUIN_HEADER_VERSION, ATUIN_CARGO_VERSION)
- .json(&map)
- .send()
- .await?;
- let resp = handle_resp_error(resp).await?;
-
- if !ensure_version(&resp)? {
- bail!("could not register user due to version mismatch");
- }
-
- let session = resp.json::<RegisterResponse>().await?;
- Ok(session)
-}
-
-pub(crate) async fn login(address: &str, req: LoginRequest) -> Result<LoginResponse> {
- ensure_crypto_provider();
- let url = make_url(address, "/login")?;
- let client = reqwest::Client::new();
-
- let resp = client
- .post(url)
- .header(USER_AGENT, APP_USER_AGENT)
- .json(&req)
- .send()
- .await?;
- let resp = handle_resp_error(resp).await?;
-
- if !ensure_version(&resp)? {
- bail!("Could not login due to version mismatch");
- }
-
- let session = resp.json::<LoginResponse>().await?;
- Ok(session)
-}
-
pub(crate) fn ensure_version(response: &Response) -> Result<bool> {
let version = response.headers().get(ATUIN_HEADER_VERSION);
@@ -287,48 +224,4 @@ impl<'a> Client<'a> {
Ok(index)
}
-
- pub(crate) async fn delete(&self) -> Result<()> {
- let url = make_url(self.sync_addr, "/account")?;
- let url = Url::parse(url.as_str())?;
-
- let resp = self.client.delete(url).send().await?;
-
- if resp.status() == 403 {
- bail!("invalid login details");
- } else if resp.status() == 200 {
- Ok(())
- } else {
- bail!("Unknown error");
- }
- }
-
- pub(crate) async fn change_password(
- &self,
- current_password: String,
- new_password: String,
- ) -> Result<()> {
- let url = make_url(self.sync_addr, "/account/password")?;
- let url = Url::parse(url.as_str())?;
-
- let resp = self
- .client
- .patch(url)
- .json(&ChangePasswordRequest {
- current_password,
- new_password,
- })
- .send()
- .await?;
-
- if resp.status() == 401 {
- bail!("current password is incorrect")
- } else if resp.status() == 403 {
- bail!("invalid login details");
- } else if resp.status() == 200 {
- Ok(())
- } else {
- bail!("Unknown error");
- }
- }
}