aboutsummaryrefslogtreecommitdiffstats
path: root/stanza/src/xep_0334.rs
diff options
context:
space:
mode:
Diffstat (limited to 'stanza/src/xep_0334.rs')
-rw-r--r--stanza/src/xep_0334.rs83
1 files changed, 83 insertions, 0 deletions
diff --git a/stanza/src/xep_0334.rs b/stanza/src/xep_0334.rs
new file mode 100644
index 0000000..9667ad7
--- /dev/null
+++ b/stanza/src/xep_0334.rs
@@ -0,0 +1,83 @@
+use peanuts::{Element, FromElement, IntoElement};
+
+pub const XMLNS: &str = "urn:xmpp:hints";
+
+#[derive(Clone, Copy, Debug)]
+pub struct NoPermanentStore;
+
+impl FromElement for NoPermanentStore {
+ fn from_element(element: Element) -> peanuts::DeserializeResult<Self> {
+ element.check_name("no-permanent-store")?;
+ element.check_namespace(XMLNS)?;
+
+ element.no_more_content()?;
+
+ Ok(Self)
+ }
+}
+
+impl IntoElement for NoPermanentStore {
+ fn builder(&self) -> peanuts::ElementBuilder {
+ Element::builder("no-permanent-store", Some(XMLNS))
+ }
+}
+
+#[derive(Clone, Copy, Debug)]
+pub struct NoStore;
+
+impl FromElement for NoStore {
+ fn from_element(element: Element) -> peanuts::DeserializeResult<Self> {
+ element.check_name("no-store")?;
+ element.check_namespace(XMLNS)?;
+
+ element.no_more_content()?;
+
+ Ok(Self)
+ }
+}
+
+impl IntoElement for NoStore {
+ fn builder(&self) -> peanuts::ElementBuilder {
+ Element::builder("no-store", Some(XMLNS))
+ }
+}
+
+#[derive(Clone, Copy, Debug)]
+pub struct NoCopy;
+
+impl FromElement for NoCopy {
+ fn from_element(element: Element) -> peanuts::DeserializeResult<Self> {
+ element.check_name("no-copy")?;
+ element.check_namespace(XMLNS)?;
+
+ element.no_more_content()?;
+
+ Ok(Self)
+ }
+}
+
+impl IntoElement for NoCopy {
+ fn builder(&self) -> peanuts::ElementBuilder {
+ Element::builder("no-copy", Some(XMLNS))
+ }
+}
+
+#[derive(Clone, Copy, Debug)]
+pub struct Store;
+
+impl FromElement for Store {
+ fn from_element(element: Element) -> peanuts::DeserializeResult<Self> {
+ element.check_name("store")?;
+ element.check_namespace(XMLNS)?;
+
+ element.no_more_content()?;
+
+ Ok(Self)
+ }
+}
+
+impl IntoElement for Store {
+ fn builder(&self) -> peanuts::ElementBuilder {
+ Element::builder("store", Some(XMLNS))
+ }
+}