Skip to content

Commit

Permalink
fix: no double logging, better debug info, adjusted log levels (#69)
Browse files Browse the repository at this point in the history
* fix: no double logging, better debug info, adjusted log levels

* fix: casing
  • Loading branch information
michalstruck authored Jan 20, 2025
1 parent 7b5bb40 commit c4661d3
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 18 deletions.
20 changes: 15 additions & 5 deletions src/routes/api/v1/register_username.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,15 @@ pub async fn register_username(
Ok(()) => {},
Err(verify::Error::Verification(e)) => {
tracing::error!(
"Register Verification Error: {}, Payload: {:?}",
"Register Verification Error: {}, payload:{:?}",
e.detail,
payload
);
return Err(ErrorResponse::validation_error(e.detail));
},
Err(e) => {
tracing::error!(
"Register Server Error: {}, Payload: {:?}",
"Register Server Error: {}, payload:{:?}",
e.to_string(),
payload
);
Expand All @@ -53,14 +53,19 @@ pub async fn register_username(
};

if !username_regex.is_match(&payload.username) {
tracing::warn!(
"Username does not match the required pattern, payload:{:?}",
payload
);
return Err(ErrorResponse::validation_error(
"Username does not match the required pattern".to_string(),
));
}

blocklist
.ensure_valid(&payload.username)
.map_err(|e| ErrorResponse::validation_error(e.to_string()))?;
blocklist.ensure_valid(&payload.username).map_err(|e| {
tracing::warn!("Username is blocked, payload:{:?}", payload);
ErrorResponse::validation_error(e.to_string())
})?;

let uniqueness_check = sqlx::query!(
"SELECT
Expand All @@ -73,12 +78,17 @@ pub async fn register_username(
.await?;

if uniqueness_check.username.unwrap_or_default() {
tracing::warn!("Username is already taken, payload:{:?}", payload);
return Err(ErrorResponse::validation_error(
"Username is already taken".to_string(),
));
};

if uniqueness_check.world_id.unwrap_or_default() {
tracing::warn!(
"This World ID has already registered a username, payload:{:?}",
payload
);
return Err(ErrorResponse::validation_error(
"This World ID has already registered a username.".to_string(),
));
Expand Down
16 changes: 11 additions & 5 deletions src/routes/api/v1/rename.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ pub async fn rename(
Ok(()) => {},
Err(verify::Error::Verification(e)) => {
tracing::error!(
"Rename Verification Error: {}, Payload: {:?}",
"Rename Verification Error: {}, payload:{:?}",
e.detail,
payload
);
return Err(ErrorResponse::validation_error(e.detail));
},
Err(e) => {
tracing::error!(
"Rename Server Error: {}, Payload: {:?}",
"Rename Server Error: {}, payload:{:?}",
e.to_string(),
payload
);
Expand All @@ -73,14 +73,19 @@ pub async fn rename(
};

if !username_regex.is_match(&payload.new_username) {
tracing::warn!(
"Username does not match the required pattern, payload:{:?}",
payload,
);
return Err(ErrorResponse::validation_error(
"Username does not match the required pattern".to_string(),
));
}

blocklist
.ensure_valid(&payload.new_username)
.map_err(|e| ErrorResponse::validation_error(e.to_string()))?;
blocklist.ensure_valid(&payload.new_username).map_err(|e| {
tracing::warn!("Blocklist error, payload:{:?}", payload);
ErrorResponse::validation_error(e.to_string())
})?;

let uniqueness_check = sqlx::query!(
"SELECT
Expand All @@ -97,6 +102,7 @@ pub async fn rename(
.await?;

if uniqueness_check.username.unwrap_or_default() {
tracing::warn!("Username is already taken, payload:{:?}", payload);
return Err(ErrorResponse::validation_error(
"Username is already taken".to_string(),
));
Expand Down
4 changes: 2 additions & 2 deletions src/routes/api/v1/update_record.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,15 @@ pub async fn update_record(
Ok(()) => {},
Err(verify::Error::Verification(e)) => {
tracing::error!(
"Update Record Verification Error: {}, Payload: {:?}",
"Update Record Verification Error: {}, payload:{:?}",
e.detail,
payload
);
return Err(ErrorResponse::validation_error(e.detail));
},
Err(e) => {
tracing::error!(
"Update Record Server Error: {}, Payload: {:?}",
"Update Record Server Error: {}, payload:{:?}",
e.to_string(),
payload
);
Expand Down
16 changes: 10 additions & 6 deletions src/types/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,21 @@ impl ErrorResponse {
}

pub fn unauthorized(error: String) -> Self {
tracing::error!("Unauthorized: {}", error);
tracing::warn!("Unauthorized: {}", error);
Self {
error,
status: StatusCode::UNAUTHORIZED,
}
}

pub fn validation_error(error: String) -> Self {
tracing::error!("Validation Error: {}", error);
pub const fn validation_error(error: String) -> Self {
Self {
error,
status: StatusCode::UNPROCESSABLE_ENTITY,
}
}

pub fn server_error(error: String) -> Self {
tracing::error!("Internal Server Error: {}", error);
pub const fn server_error(error: String) -> Self {
Self {
error,
status: StatusCode::INTERNAL_SERVER_ERROR,
Expand All @@ -52,7 +50,13 @@ impl ErrorResponse {
}

impl<E: std::error::Error> From<E> for ErrorResponse {
fn from(_: E) -> Self {
fn from(e: E) -> Self {
// additional, helpful debug info
tracing::error!(
"Internal Server Error, source: {:?}, error: {}",
e.source(),
e.to_string()
);
Self::server_error("Internal Server Error".to_string())
}
}
Expand Down

0 comments on commit c4661d3

Please sign in to comment.