Commit Graph

8 Commits

Author SHA1 Message Date
5a203d70ba Add support for access token based authentication
* Extend the configuration format in order to allow access_token,
   user_id and device_id instead of username and password
 * Move the matrix login logic outside of login_and_sync for clarity
 * Add support for access token based session resuming instead of
   logging in every time (thus creating a new device each time the
   service starts up)
 * Delay the startup of feed reader loops until after the matrix module
   has had a chance to actually check authentication

This change is quite involved and there are a few caveats, namely an
intentional race condition between the feed reader loops and matrix
authentication, as well as significantly different behaviors depending
on which authentication scheme is being used: password based
authentication requires an API call while resuming a session using an
access token does not.
2025-05-16 15:21:49 +00:00
73ee8114ca matrix: login_and_sync does not need to be generic 2025-05-15 21:06:54 +00:00
e79dfe9fc5 Run cargo update and bump package version 2025-05-03 16:05:38 +00:00
c8c9021b78 main: Implement exponential backoff in the feed fetcher loop
Backoff with an exponentially increasing delay when feeds can't be
fetched or parsed, with a maximum of 6h (after which retry every 6h)
2025-05-03 15:09:13 +00:00
5c009476d6 matrix: Rework room send error handling
* Use the tracing crate instead of println macros
 * Do not panic on failure to send messages
 * Move the send code to a separate function in preparation for adding
   a proper retry implementation
2025-04-30 15:49:53 +00:00
cacbf4af45 matrix: Handle sync errors more gracefully
* Retry failed sync immediately
 * Trace the underlying error when sync fails
2025-04-28 18:29:40 +00:00
148d4e7e43 matrix: Panic when the message-passing channel overflows 2024-11-25 04:04:43 +00:00
cd590b73fe Initial code dump: matrix feedbot, aka bender
This is a rewrite of our old feedbot in rust, heavily inspired from
rek2's INN matrix bot and making use of some bits from matrix-rust-sdk

This is an asynchronous tokio-based matrix client using a stateless feed
fetcher implementation based on reqwest, it uses feed_rs for parsing RSS
and Atom feeds. State persistence is achieved using a simple file-backed
datastore with serde_yaml as a serialization format.

Published under the GNU General Public License version 3 or later.
2024-11-22 13:08:34 +00:00