Commit graph xmpp-rs/parsers/src/muc
Author SHA1 Message Date
Emmanuel Gil Peyrot
772a326053 xmpp-parsers: Add missing size tests for MUC
skip-changelog: This is just about testing.
2025-02-11 12:27:07 +01:00
Emmanuel Gil Peyrot
0adca163f8 xmpp-parsers: Don’t use anything from std
The remaining two were core::str::FromStr and
alloc::collections::BTreeMap.

Note that this doesn’t allow us to be no_std yet.

skip-changelog: This isn’t in any way user-visible, except that some
structs are now slightly smaller.
2025-01-26 10:22:37 +00:00
Jonas Schäfer
330b216f3d parsers: add support for mediated invite syntax 2025-01-25 19:27:58 +01:00
Jonas Schäfer
b8af0d8fa2 xmpp_parsers: --features disable-validation
It was broken in multiple ways:

- xso did not honour it: unknown children and attributes would cause a
  parse error even with `--features disable-validation` set on parsers.
  For this, we introduce a new feature flag on xso, `non-pedantic`,
  which defaults unknown children and attributes to discard instead of
  fail.

  Note that individual XSOs can still choose to be always pedantic or
  always lenient by explicitly declaring the intent via the
  `on_unknown_child` and `on_unknown_attribute` metas.

- Many tests in `xmpp_parsers` were broken with `--features
  disable-validation`. They now all pass while *still* being rn with
  `disable-validation` set: In that case, they test that parsing in fact
  succeeds.
2024-12-20 14:50:14 +01:00
087534be1e parsers: Replace std stuff with alloc/core stuff 2024-12-19 20:45:38 +01:00
Emmanuel Gil Peyrot
cd43aa2fcb xmpp-parsers: Convert the Actor enum into a struct
XEP-0045 doesn’t specify what to do in the case the actor contains both
a @jid and a @nick, so let’s not encode anything special about that
here.

In addition this converted it to use xso.

Supersedes !196.

Fixes #88.
2024-12-17 18:20:52 +01:00
Emmanuel Gil Peyrot
9e9186ef7b xmpp-parsers: Convert MUC to xso 2024-08-05 15:02:25 +00:00
Emmanuel Gil Peyrot
48855843d4 xmpp-parsers: Convert some more elements to xso 2024-08-03 13:21:51 +00:00
Jonas Schäfer
819a869ffb parsers: replace some more generate_element! calls with derive macros 2024-07-27 09:39:13 +02:00
Jonas Schäfer
5d284bbd3a parsers: port some elements with children to derive macros 2024-07-26 22:31:42 +02:00
Emmanuel Gil Peyrot
7b66de1166 xmpp-parsers: Stop reexporting extra symbols
Let’s continue reexporting jid and minidom, but not their inner pub
items, users of this crate can go one level deeper if they need that.

Only xso::error::Error is still useful to reexport, as this is part of
the public API of all of our parsers.
2024-07-25 14:36:09 +00:00
Jonas Schäfer
ccf38cdf9b Port everything over to AsXml 2024-07-24 16:05:06 +02:00
Jonas Schäfer
e439e9991e parsers: port more generate_element! usages to derive macros 2024-06-30 13:05:37 +02:00
Jonas Schäfer
6ef8dbefa3 parsers: use Error type from xso
This is a large change and as such, it needs good motivation. Let me
remind you of the ultimate goal: we want a derive macro which allows us
to FromXml/IntoXml, and that derive macro should be usable from
`xmpp_parsers` and other crates.

For that, any code generated by the derive macro mustn't depend on any
code in the `xmpp_parsers` crate, because you cannot name the crate you
are in portably (`xmpp_parsers::..` wouldn't resolve within
`xmpp_parsers`, and `crate::..` would point at other crates if the macro
was used in other crates).

We also want to interoperate with code already implementing
`TryFrom<Element>` and `Into<Element>` on structs. This ultimately
requires that we have an error type which is shared by the two
implementations and that error type must be declared in the `xso` crate
to be usable by the macros.

Thus, we port the error type over to use the type declared in `xso`.

This changes the structure of the error type greatly; I do not think
that `xso` should have to know about all the different types we are
parsing there and they don't deserve special treatment. Wrapping them in
a `Box<dyn ..>` seems more appropriate.
2024-06-23 09:40:52 +02:00
Maxime “pep” Buquet
4089891f6c Update edition to 2021
- Remove TryFrom/Into and FromIterator imports
- Prevent impl_validator_using_provider macro in sasl crate from
  constructing trait object

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-12-15 19:40:09 +00:00
Maxime “pep” Buquet
b522eaf7f3 parsers: clippy pass
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-12-15 19:26:06 +00:00
Emmanuel Gil Peyrot
022a920300 xmpp-parsers: Update to the new jid crate 2023-06-20 18:59:26 +02:00
Maxime “pep” Buquet
f9d4419513
parsers: Document new MucUser helpers
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 19:17:06 +02:00
Maxime “pep” Buquet
9fa8a9f6ba
parsers: Rename MucUser::with_status to with_statuses
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 19:16:55 +02:00
Maxime “pep” Buquet
b8ba74e336
parser: Add helpers on MucUser
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 18:44:37 +02:00
Maxime “pep” Buquet
d0ec8739d5 parsers: impl MessagePayload for MucUser
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 16:54:20 +02:00
Maxime “pep” Buquet
afcf9fb2d0 parsers: correct cargo doc warnings
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-12-27 17:36:19 +01:00
Maxime “pep” Buquet
f4084bcc83 parsers: with_ helpers for muc::user::Item
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-12-27 17:36:19 +01:00
Maxime “pep” Buquet
82ed8f4991
parsers/muc: Rephrase comment, s/he or she/they/
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-12-17 12:09:00 +01:00
Maxime “pep” Buquet
f0139b4d88
parsers/muc/user: Add 333 status: Status::ServiceErrorKick
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-12-17 12:01:28 +01:00
Maxime “pep” Buquet
f8cd3c4fff
parsers/muc/user: Add status code in docstrings
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-12-17 11:51:26 +01:00
Maxime “pep” Buquet
b6b0c5ee52
parsers: cargo fmt the last commit on parsers
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2022-09-16 19:57:44 +02:00
Maxime “pep” Buquet
a425a039ca muc/user: impl PresencePayload for MucUser
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>


(cherry picked from commit 7e211619e3b51ab86ecf5cf0b746c5e16b790418)
2022-09-15 09:52:24 +00:00
Astro
d4a5a8247b minidom, tokio-xmpp: switch xml parsing to rxml 2022-04-19 20:42:30 +02:00
Emmanuel Gil Peyrot
9410849d7a Rename the xmpp-parsers directory to parsers
This doesn’t change anything to the name of the crate, just makes
autocompletion easier by not sharing the same prefix as the xmpp crate.
2021-10-11 08:24:16 +02:00