4 releases (breaking)
0.4.0 | Sep 17, 2023 |
---|---|
0.3.0 | Sep 1, 2023 |
0.2.0 | Aug 28, 2023 |
0.1.0 | Aug 27, 2023 |
0.0.1 |
|
#13 in #push-notifications
140 downloads per month
63KB
1.5K
SLoC
gotify-rs
An idiomatic Rust client for Gotify.
Overview
By default, this crate only exposes the Client::health()
,
Client::version()
methods.
All other categories of endpoints must be enabled by the corresponding feature flags.
Table of available feature flags
Feature flag | Enabled methods | Note |
---|---|---|
app |
Client::create_message() |
|
manage-applications |
Client::get_applications() , Client::create_application() , Client::update_application() , Client::delete_application() , Client::delete_application_image() |
|
manage-clients |
Client::get_clients() , Client::create_client() , Client::update_client() , Client::delete_client() |
|
manage-messages |
Client::get_application_messages() , Client::delete_application_messages() , Client::get_messages() , Client::delete_messages() , Client::delete_message() |
doesn't include Client::create_message() and Client::stream_messages() |
manage-plugins |
Client::get_plugins() , Client::get_plugin_config() , Client::update_plugin_config() , Client::disable_plugin() , Client::get_plugin_display() , Client::enable_plugin() |
|
manage-users |
Client::get_current_user() , Client::update_current_user() , Client::get_users() , Client::get_user() , Client::update_user() , Client::delete_user() |
|
websocket |
Client::stream_messages() |
enables additional dependencies (mainly tokio-tungstenite ) |
Most methods that send data to Gotify's API use the
builder pattern
for a more readable API and better support of future additions to Gotify's API.
If an optional parameter is added to an endpoint, it can be be added
as a builder method without causing to much breakage.
All builders implement IntoFuture
, so those
methods can also be await
ed directly, just as if they were regular async methods.
Examples
Creating a message
let client: gotify::AppClient = gotify::Client::new(GOTIFY_URL, GOTIFY_APP_TOKEN)?;
client.create_message("Lorem ipsum dolor sit amet").with_title("Lorem Ipsum").await?;
Listening for new messages
use futures_util::StreamExt;
let client: gotify::ClientClient = gotify::Client::new(GOTIFY_URL, GOTIFY_CLIENT_TOKEN)?;
let mut messages = client.stream_messages().await?;
while let Some(result) = messages.next().await {
let message = result?;
println!("{message:#?}")
}
License
This project is licensed under the MIT License.
See LICENSE for more information.
Dependencies
~4–16MB
~240K SLoC