Add is_id methods
This commit is contained in:
parent
cbd6902978
commit
ffc8faf825
2 changed files with 81 additions and 1 deletions
|
@ -26,7 +26,7 @@ use crate::{
|
||||||
base::{AnyBase, AsBase, Base, Extends},
|
base::{AnyBase, AsBase, Base, Extends},
|
||||||
markers,
|
markers,
|
||||||
object::{ApObject, AsObject, Object},
|
object::{ApObject, AsObject, Object},
|
||||||
primitives::OneOrMany,
|
primitives::{OneOrMany, XsdAnyUri},
|
||||||
unparsed::{Unparsed, UnparsedMut, UnparsedMutExt},
|
unparsed::{Unparsed, UnparsedMut, UnparsedMutExt},
|
||||||
};
|
};
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
@ -431,6 +431,28 @@ pub trait ActorAndObjectRefExt: ActorAndObjectRef {
|
||||||
self.actor_field_ref()
|
self.actor_field_ref()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check if the actor's ID is `id`
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # fn main() -> Result<(), anyhow::Error> {
|
||||||
|
/// # use activitystreams_new::{
|
||||||
|
/// # context,
|
||||||
|
/// # activity::Create,
|
||||||
|
/// # primitives::XsdAnyUri
|
||||||
|
/// # };
|
||||||
|
/// # let mut create = Create::new(context(), context());
|
||||||
|
/// use activitystreams_new::prelude::*;
|
||||||
|
///
|
||||||
|
/// create.set_actor("https://example.com".parse::<XsdAnyUri>()?);
|
||||||
|
///
|
||||||
|
/// assert!(create.actor_is(&"https://example.com".parse()?));
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
fn actor_is(&self, id: &XsdAnyUri) -> bool {
|
||||||
|
self.actor().is_single_id(id)
|
||||||
|
}
|
||||||
|
|
||||||
/// Set the actor for the current activity
|
/// Set the actor for the current activity
|
||||||
///
|
///
|
||||||
/// This overwrites the contents of actor
|
/// This overwrites the contents of actor
|
||||||
|
@ -531,6 +553,28 @@ pub trait ActorAndObjectRefExt: ActorAndObjectRef {
|
||||||
self.object_field_ref()
|
self.object_field_ref()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check if the object's ID is `id`
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # fn main() -> Result<(), anyhow::Error> {
|
||||||
|
/// # use activitystreams_new::{
|
||||||
|
/// # context,
|
||||||
|
/// # activity::Create,
|
||||||
|
/// # primitives::XsdAnyUri
|
||||||
|
/// # };
|
||||||
|
/// # let mut create = Create::new(context(), context());
|
||||||
|
/// use activitystreams_new::prelude::*;
|
||||||
|
///
|
||||||
|
/// create.set_object("https://example.com".parse::<XsdAnyUri>()?);
|
||||||
|
///
|
||||||
|
/// assert!(create.object_is(&"https://example.com".parse()?));
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
fn object_is(&self, id: &XsdAnyUri) -> bool {
|
||||||
|
self.object().is_single_id(id)
|
||||||
|
}
|
||||||
|
|
||||||
/// Set the object for the current activity
|
/// Set the object for the current activity
|
||||||
///
|
///
|
||||||
/// This overwrites the contents of object
|
/// This overwrites the contents of object
|
||||||
|
|
36
src/base.rs
36
src/base.rs
|
@ -1125,6 +1125,27 @@ impl AnyBase {
|
||||||
.or_else(|| self.as_base().and_then(|base| base.id.as_ref()))
|
.or_else(|| self.as_base().and_then(|base| base.id.as_ref()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check if the current object's id matches the provided id
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # fn main() -> Result<(), anyhow::Error> {
|
||||||
|
/// # use activitystreams_new::{
|
||||||
|
/// # object::{kind::VideoType, Video}, base::AnyBase, prelude::*,
|
||||||
|
/// # };
|
||||||
|
/// # let mut video = Video::new();
|
||||||
|
/// #
|
||||||
|
/// video.set_id("https://example.com".parse()?);
|
||||||
|
///
|
||||||
|
/// let any_base = AnyBase::from_extended(video)?;
|
||||||
|
///
|
||||||
|
/// assert!(any_base.is_id(&"https://example.com".parse()?));
|
||||||
|
/// # Ok(())
|
||||||
|
/// # }
|
||||||
|
/// ```
|
||||||
|
pub fn is_id(&self, id: &XsdAnyUri) -> bool {
|
||||||
|
self.id() == Some(id)
|
||||||
|
}
|
||||||
|
|
||||||
/// Get the kind from the current object
|
/// Get the kind from the current object
|
||||||
///
|
///
|
||||||
/// This method only produces a value if the current object is a `Base<serde_json::Value>`
|
/// This method only produces a value if the current object is a `Base<serde_json::Value>`
|
||||||
|
@ -1436,6 +1457,21 @@ impl OneOrMany<AnyBase> {
|
||||||
self.as_one().and_then(|one| one.id())
|
self.as_one().and_then(|one| one.id())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check if there's only one ID, and if it equals `id`
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # use activitystreams_new::{base::Base, primitives::{OneOrMany, XsdAnyUri}};
|
||||||
|
/// # let mut base = Base::<String>::new();
|
||||||
|
/// # let id: XsdAnyUri = "https://example.com".parse().unwrap();
|
||||||
|
/// # base.id = Some(id.clone());
|
||||||
|
/// # let base = OneOrMany::from_base(base.into_generic().unwrap().into());
|
||||||
|
/// #
|
||||||
|
/// assert!(base.is_single_id(&id));
|
||||||
|
/// ```
|
||||||
|
pub fn is_single_id(&self, id: &XsdAnyUri) -> bool {
|
||||||
|
self.as_single_id() == Some(id)
|
||||||
|
}
|
||||||
|
|
||||||
/// Get the kind of a single object if there is only one object
|
/// Get the kind of a single object if there is only one object
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
|
|
Loading…
Reference in a new issue