diff --git a/docs/10_fetching_objects_with_unknown_type.md b/docs/10_fetching_objects_with_unknown_type.md index 793ec70..fca9ee1 100644 --- a/docs/10_fetching_objects_with_unknown_type.md +++ b/docs/10_fetching_objects_with_unknown_type.md @@ -32,10 +32,10 @@ impl Object for SearchableDbObjects { type Kind = SearchableObjects; type Error = anyhow::Error; - fn id(&self) -> &Url { + fn id(&self) -> Url { match self { - SearchableDbObjects::User(p) => &p.federation_id, - SearchableDbObjects::Post(n) => &n.federation_id, + SearchableDbObjects::User(p) => p.federation_id.clone(), + SearchableDbObjects::Post(n) => n.federation_id.clone(), } } diff --git a/examples/live_federation/objects/person.rs b/examples/live_federation/objects/person.rs index 44d0844..3a3fb9c 100644 --- a/examples/live_federation/objects/person.rs +++ b/examples/live_federation/objects/person.rs @@ -69,8 +69,8 @@ impl Object for DbUser { type Kind = Person; type Error = Error; - fn id(&self) -> &Url { - self.ap_id.inner() + fn id(&self) -> Url { + self.ap_id.inner().clone() } fn last_refreshed_at(&self) -> Option> { diff --git a/examples/live_federation/objects/post.rs b/examples/live_federation/objects/post.rs index 1d8d7e6..fc317de 100644 --- a/examples/live_federation/objects/post.rs +++ b/examples/live_federation/objects/post.rs @@ -50,8 +50,8 @@ impl Object for DbPost { type Kind = Note; type Error = Error; - fn id(&self) -> &Url { - self.ap_id.inner() + fn id(&self) -> Url { + self.ap_id.inner().clone() } async fn read_from_id( diff --git a/examples/local_federation/objects/person.rs b/examples/local_federation/objects/person.rs index 7dd6165..819572c 100644 --- a/examples/local_federation/objects/person.rs +++ b/examples/local_federation/objects/person.rs @@ -134,8 +134,8 @@ impl Object for DbUser { type Kind = Person; type Error = Error; - fn id(&self) -> &Url { - self.ap_id.inner() + fn id(&self) -> Url { + self.ap_id.inner().clone() } fn last_refreshed_at(&self) -> Option> { diff --git a/examples/local_federation/objects/post.rs b/examples/local_federation/objects/post.rs index 0de23fd..ff2c650 100644 --- a/examples/local_federation/objects/post.rs +++ b/examples/local_federation/objects/post.rs @@ -47,8 +47,8 @@ impl Object for DbPost { type Kind = Note; type Error = Error; - fn id(&self) -> &Url { - self.ap_id.inner() + fn id(&self) -> Url { + self.ap_id.inner().clone() } async fn read_from_id( diff --git a/src/activity_sending.rs b/src/activity_sending.rs index 14466e7..6efe28d 100644 --- a/src/activity_sending.rs +++ b/src/activity_sending.rs @@ -190,7 +190,7 @@ where // PKey is internally like an Arc<>, so cloning is ok data.config .actor_pkey_cache - .try_get_with_by_ref(actor_id, async { + .try_get_with_by_ref(&actor_id, async { let private_key_pem = actor.private_key_pem().ok_or_else(|| { Error::Other(format!( "Actor {actor_id} does not contain a private key for signing" diff --git a/src/traits/either.rs b/src/traits/either.rs index af647d7..e2e26a6 100644 --- a/src/traits/either.rs +++ b/src/traits/either.rs @@ -30,7 +30,7 @@ where type Error = E; /// `id` field of the object - fn id(&self) -> &Url { + fn id(&self) -> Url { match self { Either::Left(l) => l.id(), Either::Right(r) => r.id(), diff --git a/src/traits/mod.rs b/src/traits/mod.rs index 7262836..7e13cac 100644 --- a/src/traits/mod.rs +++ b/src/traits/mod.rs @@ -53,7 +53,7 @@ pub mod tests; /// type Kind = Note; /// type Error = anyhow::Error; /// -/// fn id(&self) -> &Url { self.ap_id.inner() } +/// fn id(&self) -> Url { self.ap_id.inner().clone() } /// /// async fn read_from_id(object_id: Url, data: &Data) -> Result, Self::Error> { /// // Attempt to read object from local database. Return Ok(None) if not found. @@ -110,7 +110,7 @@ pub trait Object: Sized + Debug { type Error; /// `id` field of the object - fn id(&self) -> &Url; + fn id(&self) -> Url; /// Returns the last time this object was updated. /// @@ -194,8 +194,8 @@ pub trait Object: Sized + Debug { redirect_remote_object, }; let id = self.id(); - let res = if !data.config.is_local_url(id) { - redirect_remote_object(id) + let res = if !data.config.is_local_url(&id) { + redirect_remote_object(&id) } else if !self.is_deleted() { let json = self.into_json(data).await?; create_http_response(json, federation_context)? diff --git a/src/traits/tests.rs b/src/traits/tests.rs index ae2ee84..f55b33b 100644 --- a/src/traits/tests.rs +++ b/src/traits/tests.rs @@ -73,8 +73,8 @@ impl Object for DbUser { type Kind = Person; type Error = Error; - fn id(&self) -> &Url { - &self.federation_id + fn id(&self) -> Url { + self.federation_id.clone() } async fn read_from_id( @@ -179,7 +179,7 @@ impl Object for DbPost { type Kind = Note; type Error = Error; - fn id(&self) -> &Url { + fn id(&self) -> Url { todo!() }