Compare commits

...
1 Commits
Author SHA1 Message Date
phoenix 8317f41e3c Claim update (#26)
Release Tagging / release (push) Successful in 47s
Rust Build / Check (push) Successful in 56s
Rust Build / Rustfmt (push) Successful in 27s
Rust Build / Test Suite (push) Successful in 1m34s
Rust Build / Clippy (push) Successful in 50s
Rust Build / build (push) Successful in 40s
Release Tagging / release (pull_request) Successful in 46s
Rust Build / Rustfmt (pull_request) Successful in 28s
Rust Build / Check (pull_request) Successful in 1m15s
Rust Build / Test Suite (pull_request) Successful in 1m20s
Rust Build / Clippy (pull_request) Successful in 43s
Rust Build / build (pull_request) Successful in 1m2s
Reviewed-on: phoenix/textsender_models#26
2026-06-13 18:02:25 -04:00
3 changed files with 23 additions and 2 deletions
Generated
+1 -1
View File
@@ -522,7 +522,7 @@ dependencies = [
[[package]] [[package]]
name = "textsender_models" name = "textsender_models"
version = "0.3.1" version = "0.3.2"
dependencies = [ dependencies = [
"const_format", "const_format",
"dotenvy", "dotenvy",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "textsender_models" name = "textsender_models"
version = "0.3.1" version = "0.3.2"
edition = "2024" edition = "2024"
rust-version = "1.95" rust-version = "1.95"
description = "Models used for the textsender project" description = "Models used for the textsender project"
+21
View File
@@ -7,11 +7,32 @@ pub struct Claims {
#[serde(alias = "iss")] #[serde(alias = "iss")]
pub issued: String, pub issued: String,
#[serde(alias = "exp")] #[serde(alias = "exp")]
#[serde(deserialize_with = "deserialize_i64_from_f64")]
pub expired: i64, pub expired: i64,
#[serde(alias = "iat")] #[serde(alias = "iat")]
#[serde(deserialize_with = "deserialize_i64_from_f64")]
pub issued_at: i64, pub issued_at: i64,
} }
fn deserialize_i64_from_f64<'de, D>(deserializer: D) -> Result<i64, D::Error>
where
D: serde::Deserializer<'de>,
{
let val = f64::deserialize(deserializer)?;
// Handle NaN and infinity cases
if val.is_nan() || val.is_infinite() {
return Err(serde::de::Error::custom("invalid float value"));
}
// Round to nearest integer and convert
let rounded = val.round();
// Check if the rounded value can fit in i64
if rounded < (i64::MIN as f64) || rounded > (i64::MAX as f64) {
Err(serde::de::Error::custom("float out of i64 range"))
} else {
Ok(rounded as i64)
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] #[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)]
pub struct LoginResult { pub struct LoginResult {
pub user_id: uuid::Uuid, pub user_id: uuid::Uuid,