8de14336f5
jid: Add test for Jid::Full ser/de
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-08-14 21:59:27 +02:00
e9066c353d
jid: Replace serde_json with serde_test in tests
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-08-14 21:59:09 +02:00
mb
2f808f161f
chore: Rename User struct to JidContainer
2023-08-14 12:17:51 +00:00
mb
fc23f987cd
style: Run cargo fmt
2023-08-14 12:17:51 +00:00
xmppftw
b09c540080
Add tests for serde features of jid crate
2023-08-14 12:17:51 +00:00
mb
997303900b
fix(jid): Fix JID serialization with serde; address oversight in commit cdf4486e
2023-08-14 12:17:51 +00:00
Emmanuel Gil Peyrot
2ad0dd66dd
Replace format!("{}", jid) with jid.to_string()
...
This is more readable I think, and expresses better our intent.
2023-08-10 19:35:53 +00:00
Emmanuel Gil Peyrot
6fc3a46bd2
jid: Fix tests
2023-08-10 19:31:10 +00:00
Emmanuel Gil Peyrot
b28c843eff
xmpp: Use the new FullJid::resource_str() method
2023-08-10 19:31:10 +00:00
Emmanuel Gil Peyrot
e6595762f6
Use the parts/str split in FullJid and BareJid too
...
Since 199b3ae7ae
we allow typed parts to
be reused without stringprep being reapplied. This extends it from just
Jid to FullJid and BareJid too.
2023-08-10 19:31:10 +00:00
Emmanuel Gil Peyrot
6ccee76621
Add a test for an invalid resource
...
This one uses unassigned codepoints in Unicode 3.2.
2023-08-05 16:53:22 +02:00
Raman Hafiyatulin
fd26d04635
macro impl_validator_using_provider!
: use $crate::server::ValidatorError
instead of ValidatorError
2023-07-30 17:17:26 +03:00
Emmanuel Gil Peyrot
11087d64f7
Add *Jid::into_inner() returning the inner String
...
Thanks pep. for the suggestion!
2023-07-30 15:23:02 +02:00
Emmanuel Gil Peyrot
6f304d197d
jid: Optimise for no-transform JIDs
...
stringprep can make transformations to a JID, the most well-known one is
making the nodepart and domainpart lowercase but it does much more than
that.
It is extremely common to have to validate already-normalised JIDs
though, and since https://github.com/sfackler/rust-stringprep/pull/4
this is exactly what the stringprep crate does, by returning
Cow::Borrowed() for common ASCII-only cases.
This commit further reduces time spent by an additional -15%..-58% when
already using this stringprep improvement, in addition to the
89.5%..98.5% change brought by this improvement (and +1.3% total when
the JID isn’t normalised yet).
For instance, my own full JID parses in 1.83 µs before these changes,
132 ns with just the stringprep optimisation, and 46 ns with also this
commit, on an i7-8700K.
2023-07-16 19:50:12 +02:00
b3da75d0a7
parsers/doap: Add supported platforms
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-27 01:56:01 +02:00
xmppftw
76b68e932a
Update CHANGELOG for jid crate
2023-06-21 18:41:32 +02:00
xmppftw
4266368a98
JIDs now have typed and stringy methods for node/domain/resource access
...
Jid now has typed with_resource and stringy with_resource_str
Jid now has is_full, is_bare
2023-06-21 18:30:25 +02:00
xmppftw
199b3ae7ae
Introduce typed Parts for the JID to enable unfallible JID construction
2023-06-21 14:15:03 +02:00
Emmanuel Gil Peyrot
85bdcdb131
tokio-xmpp: Bump idna dependency
2023-06-21 12:05:33 +00:00
Emmanuel Gil Peyrot
6ccc5ccace
tokio-xmpp: Poll packets in a loop
...
This needs to be a loop in order to ignore packets we don’t care about,
or those we want to handle elsewhere. Returning something isn’t correct
in those two cases because it would signal to tokio that the XMPPStream
is also done, while there could be additional packets waiting for us.
The proper solution is thus a loop which we exit once we have something
to return.
Fixes a deadlock when we ignore some packets.
2023-06-21 11:55:42 +00:00
ac22765f21
tokio-xmpp: Remove newline after stream:stream
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-21 12:21:52 +02:00
e9cbeb1863
tokio-xmpp: debug print stream:stream too
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-21 12:21:52 +02:00
xmppftw
c86f0118b7
jid: Better docs for those types
2023-06-20 21:21:06 +02:00
Emmanuel Gil Peyrot
5b6dcb6549
icu: Remove this obsolete attempt
2023-06-20 19:59:16 +02:00
Emmanuel Gil Peyrot
cea9c04507
xmpp: Update to the new jid crate
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
3c9df12606
tokio-xmpp: Update to the new jid crate
...
This helps a bit thanks to fewer clones, but otherwise there are very
few changes.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
c7887efbc7
xmpp-parsers: Fix size tests on 32-bit
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
91736ec0ed
xmpp-parsers: Fix size tests on 64-bit
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
022a920300
xmpp-parsers: Update to the new jid crate
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
cdf4486e53
jid: Remove From<*Jid> for String
...
Use fmt::Display instead if you want this feature.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
ccf41fc1e8
jid: Rename errors to make them more consistent
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
1904f0af6c
jid: Rename error into Error
...
JidParseError is an ok name when imported elsewhere, but inside of this
crate it makes much more sense to name it Error.
2023-06-20 18:59:26 +02:00
xmppftw
2a3d393ad5
jid: Factorize length check for shorter code
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
cf25bd3fee
jid: Refactor all three JID types
...
The main reason for this refactor was to make common operations simpler,
for instance formatting a JID is now a simple clone of a String.
Instead of having three different String for each of node, domain and
resource, we now have a single String with offsets pointing to where the
at and slash are (if they are present).
This also reduces the size of a FullJid from 72 bytes to 32 bytes on
64-bit platforms (less so on 32-bit), and BareJid from 48 bytes to
32 bytes. Jid is still 40 bytes instead of 32, but that can be improved
in a future version where InnerJid has been inlined into each struct.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
187e156b0b
jid: Move JidParseError into its own module
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
d867d8d7a1
jid: Replace icu with stringprep
...
This dependency is unmaintained, but it is written in pure Rust unlike
ICU, and doesn’t require a roundtrip through UTF-16, improving both
performances (perhaps?) and ease of compilation.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
a7dee0bef4
jid: Test for the size of our structs
...
This shows how big JIDs are represented on the stack and in other
structs.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
17335136fe
tokio-xmpp: Add syntax highlighting to debug logs
...
This uses syntect, and has been checked to have zero overhead when it is
disabled.
2023-06-19 19:52:38 +02:00
99f3811c71
tokio-xmpp: Add debug for chosen DNS method
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-18 17:04:23 +02:00
f9d4419513
parsers: Document new MucUser helpers
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 19:17:06 +02:00
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
552848b3ed
xmpp: Revert part of 9c39e3 and fix code at the right place
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 19:10:45 +02:00
d52ace59a9
xmpp: add MucUser payload in send_room_private_message Messages
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 18:54:23 +02:00
b8ba74e336
parser: Add helpers on MucUser
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 18:44:37 +02:00
xmppftw
9c39e3c195
Event::RoomPrivateMessage does not expose sender FullJid ; add Agent::send_room_private_message method
2023-06-07 15:32:42 +00:00
xmppftw
6144a4c8b0
Event::RoomPrivateMessage for MUC PMs ( #85 )
2023-06-07 15:32:42 +00:00
4701f6bb69
jid: Rename Error::IcuError into Error::Stringprep
...
Avoir the "Error Error" pattern, and also use Stringprep instead of ICU
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 17:29:05 +02:00
xmppftw
2cafecb004
JID stringprep errors return a JidParseError instead of panic ( #84 )
2023-06-07 17:29:00 +02:00
d0ec8739d5
parsers: impl MessagePayload for MucUser
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 16:54:20 +02:00
6cd4addc1a
parsers: Add with_payload/with_payloads helpers on Message
...
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 16:49:19 +02:00