4fb24a5a21
There were too many false positive responses from libmagic to have this just happen in the background. In a future release I may add a specific error which is returned when the given file has no extension, and downstream application developers can use that as an indicator that they should ask the user if they want to detect the filetype, making use of libmagic directly in the downstream application as appropriate. |
||
---|---|---|
.github | ||
.vscode | ||
examples | ||
src | ||
tests | ||
.env.sample | ||
.gitignore | ||
CHANGELOG.md | ||
Cargo.toml | ||
LICENCE-APACHE | ||
LICENCE-MIT | ||
Makefile | ||
README.md | ||
build.rs | ||
rustfmt.toml |
README.md
Async Mastodon client library
A type-safe, async wrapper around the client API for Mastodon
Installation
To add mastodon-async
to your project, add the following to the
[dependencies]
section of your Cargo.toml
mastodon-async = "1.0"
Alternatively, run the following command:
$ cargo add mastodon-async
Example
In your Cargo.toml
, make sure you enable the toml
feature:
[dependencies.mastodon-async]
version = "1.0"
features = ["toml"]
// src/main.rs
use mastodon_async::prelude::*;
use mastodon_async::helpers::toml; // requires `features = ["toml"]`
use mastodon_async::{helpers::cli, Result};
#[tokio::main]
async fn main() -> Result<()> {
let mastodon = if let Ok(data) = toml::from_file("mastodon-data.toml") {
Mastodon::from(data)
} else {
register().await?
};
let you = mastodon.verify_credentials().await?;
println!("{:#?}", you);
Ok(())
}
async fn register() -> Result<Mastodon> {
let registration = Registration::new("https://botsin.space")
.client_name("mastodon-async-examples")
.build()
.await?;
let mastodon = cli::authenticate(registration).await?;
// Save app data for using on the next run.
toml::to_file(&mastodon.data, "mastodon-data.toml")?;
Ok(mastodon)
}
It also supports the Streaming API:
use mastodon_async::{prelude::*, Result, entities::event::Event};
use futures_util::TryStreamExt;
#[tokio::main]
async fn main() -> Result<()> {
let client = Mastodon::from(Data::default());
client.stream_user()
.await?
.try_for_each(|event| async move {
match event {
Event::Update(ref status) => { /* .. */ },
Event::Notification(ref notification) => { /* .. */ },
Event::Delete(ref id) => { /* .. */ },
Event::FiltersChanged => { /* .. */ },
}
Ok(())
})
.await?;
Ok(())
}