An idiomatic Rust client for Gotify.
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 awaited directly, just as if they were regular async methods.
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?;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:#?}")
}This project is licensed under the MIT License.
See LICENSE for more information.