mirror of
https://github.com/johrpan/musicus.git
synced 2025-10-26 19:57:25 +01:00
Split into multiple crates
This commit is contained in:
parent
d7fb996183
commit
5d06ec9faf
88 changed files with 501 additions and 528 deletions
|
|
@ -1,48 +0,0 @@
|
|||
use crate::backend::{Backend, Result};
|
||||
use isahc::http::StatusCode;
|
||||
use isahc::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::time::Duration;
|
||||
|
||||
/// Response body data for captcha requests.
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Captcha {
|
||||
pub id: String,
|
||||
pub question: String,
|
||||
}
|
||||
|
||||
/// Request body data for user registration.
|
||||
#[derive(Serialize, Debug, Clone)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct UserRegistration {
|
||||
pub username: String,
|
||||
pub password: String,
|
||||
pub email: Option<String>,
|
||||
pub captcha_id: String,
|
||||
pub answer: String,
|
||||
}
|
||||
|
||||
impl Backend {
|
||||
/// Request a new captcha for registration.
|
||||
pub async fn get_captcha(&self) -> Result<Captcha> {
|
||||
let body = self.get("captcha").await?;
|
||||
let captcha = serde_json::from_str(&body)?;
|
||||
Ok(captcha)
|
||||
}
|
||||
|
||||
/// Register a new user and return whether the process suceeded. This will
|
||||
/// not store the new login credentials.
|
||||
pub async fn register(&self, data: UserRegistration) -> Result<bool> {
|
||||
let server_url = self.server_url()?;
|
||||
|
||||
let mut response = Request::post(format!("{}/users", server_url))
|
||||
.timeout(Duration::from_secs(10))
|
||||
.header("Content-Type", "application/json")
|
||||
.body(serde_json::to_string(&data)?)?
|
||||
.send_async()
|
||||
.await?;
|
||||
|
||||
Ok(response.status() == StatusCode::OK)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue