diff options
Diffstat (limited to 'crates/whirl_api/src/routes/worlds/vip/mod.rs')
| -rw-r--r-- | crates/whirl_api/src/routes/worlds/vip/mod.rs | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/crates/whirl_api/src/routes/worlds/vip/mod.rs b/crates/whirl_api/src/routes/worlds/vip/mod.rs index c9455e6..7b7aee0 100644 --- a/crates/whirl_api/src/routes/worlds/vip/mod.rs +++ b/crates/whirl_api/src/routes/worlds/vip/mod.rs @@ -5,27 +5,35 @@ mod structures; use std::str::from_utf8; -use actix_web::{HttpRequest, HttpResponse}; +use axum::response; use crate::routes::worlds::vip::structures::Vip; -// error: this argument is passed by value, but not consumed in the function -// body -#[allow(clippy::needless_pass_by_value)] -pub fn vip(req: HttpRequest) -> HttpResponse { - let queries = qstring::QString::from(req.query_string()); +#[derive(Serialize, Deserialize)] +pub struct Parameters { + username: Option<String>, +} + +#[allow(clippy::needless_pass_by_value, clippy::unused_async)] +pub async fn vip( + axum::extract::Query(req): axum::extract::Query<Parameters>, +) -> impl response::IntoResponse { let mut easy = curl::easy::Easy::new(); let mut error = String::new(); - let username = queries.get("username"); - if username.is_none() || username.map_or(false, str::is_empty) { + let username = req.username; + if username.is_none() + || username + .as_ref() + .map_or(false, std::string::String::is_empty) + { error = "no username query parameter provided, defaulting to 'null'".to_string(); } easy .url(&format!( "http://www-dynamic.us.worlds.net/cgi-bin/vip.pl?Username={}", - username.unwrap_or("null"), + username.unwrap_or_else(|| "null".to_string()), )) .unwrap(); @@ -43,11 +51,14 @@ pub fn vip(req: HttpRequest) -> HttpResponse { transfer.perform().unwrap(); } - HttpResponse::Ok().json(Vip { - vip: from_utf8(&response) - .unwrap() - .to_string() - .contains("You're already a VIP!"), - error: if error.is_empty() { None } else { Some(error) }, - }) + ( + hyper::StatusCode::OK, + response::Json(Vip { + vip: from_utf8(&response) + .unwrap() + .to_string() + .contains("You're already a VIP!"), + error: if error.is_empty() { None } else { Some(error) }, + }), + ) } |