From 45a7555db38d72707bdeb945125caa705dc4f168 Mon Sep 17 00:00:00 2001 From: aprilthepink Date: Wed, 17 Jul 2024 01:07:23 +0200 Subject: [PATCH] fix: lysand ap fetch UUID change and wrong URI --- src/lysand/conversion.rs | 5 +++-- src/lysand/http.rs | 13 +++++++++++-- src/objects/person.rs | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/lysand/conversion.rs b/src/lysand/conversion.rs index 60974ba..096d179 100644 --- a/src/lysand/conversion.rs +++ b/src/lysand/conversion.rs @@ -110,7 +110,7 @@ pub async fn lysand_user_from_db( ); let user = super::objects::User { rtype: super::objects::LysandType::User, - id: uuid::Uuid::parse_str(&user.id)?, + id: uuid::Uuid::try_parse(&user.id)?, uri: url.clone(), username: user.username, display_name, @@ -129,7 +129,8 @@ pub async fn lysand_user_from_db( created_at: OffsetDateTime::from_unix_timestamp(user.created_at.timestamp()).unwrap(), public_key: PublicKey { actor: url.clone(), - public_key: "AAAAC3NzaC1lZDI1NTE5AAAAIMxsX+lEWkHZt9NOvn9yYFP0Z++186LY4b97C4mwj/f2".to_string(), // dummy key + public_key: "AAAAC3NzaC1lZDI1NTE5AAAAIMxsX+lEWkHZt9NOvn9yYFP0Z++186LY4b97C4mwj/f2" + .to_string(), // dummy key }, }; Ok(user) diff --git a/src/lysand/http.rs b/src/lysand/http.rs index 3790edc..11ec1da 100644 --- a/src/lysand/http.rs +++ b/src/lysand/http.rs @@ -58,9 +58,18 @@ async fn query_post( } if let Some(user) = query.user_url.clone() { - let target = ObjectId::::from(user) - .dereference(&data.to_request_data()) + let opt_model = prelude::User::find() + .filter(user::Column::Url.eq(user.as_str())) + .one(db) .await?; + let target; + if let Some(model) = opt_model { + target = model; + } else { + target = ObjectId::::from(user) + .dereference(&data.to_request_data()) + .await?; + } let lysand_user = lysand_user_from_db(target).await?; return Ok(HttpResponse::Ok() diff --git a/src/objects/person.rs b/src/objects/person.rs index c3bbd28..078b303 100644 --- a/src/objects/person.rs +++ b/src/objects/person.rs @@ -143,7 +143,7 @@ impl Object for user::Model { public_key: Set(json.public_key.public_key_pem), local: Set(false), summary: Set(json.summary), - url: Set(json.url.to_string()), + url: Set(json.id.to_string()), follower_count: Set(0), following_count: Set(0), created_at: Set(Utc::now()),