~samwhited/xmpp

carbons: add handler for incoming carbons

Signed-off-by: Sam Whited <sam@samwhited.com>
xmpp: fix an error in UnmarshalIQ

Previously UnmarshalIQ would fail if there was no payload in the IQ (eg.
an empty IQ result, indicating success). Instead, skip unmarshaling in
this case.

Signed-off-by: Sam Whited <sam@samwhited.com>
docs: update broken links

Fix a link to the issues to use a domain we control and update the Go
chat room to link to the correct JID/web chat.

Signed-off-by: Sam Whited <sam@samwhited.com>
all: remove use of deprecated ioutil

Signed-off-by: Sam Whited <sam@samwhited.com>
all: use only Open Collective for fundraising

We also keep the GitHub link active for now because that's probably
easier for most people.

Signed-off-by: Sam Whited <sam@samwhited.com>
carbons: remove unnecessary sync in tests

Signed-off-by: Sam Whited <sam@samwhited.com>
carbons: new package

Add basic functionality for enabling and disabling carbons.

Fixes #153

Signed-off-by: Sam Whited <sam@samwhited.com>
xmpp, websocket: move websocket negotiator config

Previously we configured whether to use websockets in the stream config.
This meant that in a future version of this library where the stream
config can be changed on each feature negotiation step (eg. to set the
language once we know the JID we're trying to auth as) we could swap
back and forth between websockets and the normal way, which is not
ideal. It also just felt wrong there: the websocket negotiator should
obviously be in the websocket package.
However, splitting it out was difficult because unless we copy/paste the
entire implementation (a maintainability nightmare) we end up with
import loops.
To fix this a somewhat jank internal API was added so that we can use
the same implementation but copy/pate a single string key instead of the
whole thing. For now this works and is hidden from the user.

Signed-off-by: Sam Whited <sam@samwhited.com>
xmpp: clean up main docs

This doesn't really change much, but I don't think we're going to do all
the various changes proposed right now. The docs are actually pretty
good and I don't see any obvious way to make them more consumable and
readable.

Fixes #144

Signed-off-by: Sam Whited <sam@samwhited.com>
internal/integration: write docs

Fixes #146

Signed-off-by: Sam Whited <sam@samwhited.com>
muc: write basic package level docs

This provides users with an entry point and a basic overview of the
packages philosophy so that they're not stuck wondering where to begin
or why the package doesn't keep track of joined users.

Fixes #145

Signed-off-by: Sam Whited <sam@samwhited.com>
.builds: re-enable ejabberd integration tests

Signed-off-by: Sam Whited <sam@samwhited.com>
disco: add integration tests

Fixes #152

Signed-off-by: Sam Whited <sam@samwhited.com>
.builds: mirror to Codeberg

Signed-off-by: Sam Whited <sam@samwhited.com>
dial: retry DNS integration tests up to 3 times

These are probably our most flaky integration tests. Retry them up to 3
times to try and reduce the flake to acceptable levels.

Signed-off-by: Sam Whited <sam@samwhited.com>
muc: add method to set subject

Signed-off-by: Sam Whited <sam@samwhited.com>
muc: allow re-syncing rooms

Signed-off-by: Sam Whited <sam@samwhited.com>
muc: use new muc channel config

Signed-off-by: Sam Whited <sam@samwhited.com>
internal/integration/prosody: add muc room config

Allowing us to pre-configure MUC rooms will reduce boilerplate (and
round trips) for integration tests in the muc package.

Also ship the license file like we do for Go to make sure we're properly
attributing the authors and following the license to the best of our
ability.

Signed-off-by: Sam Whited <sam@samwhited.com>
muc: fix broken tests

Don't check for the 110 status code, just check that we're expecting a
presence.

Signed-off-by: Sam Whited <sam@samwhited.com>
Next