kuon

Kuon

Twitter Client Library written in Rust.

inspired by anaconda

Example

```rust let builder = kuon::TwitterAPI::builder() .accesstoken("accesstoken") .accesstokensecret("accesstokensecret") .apikey("apikey") .apisecretkey("apisecretkey");

let api = builder.build().await?;

let res = api.search_tweets().q("rust").send().await?; let res = api.favorite().id(0).send().await?; let res = api.retweet().id(0).send().await?; ```

Shord-hand

```rust // Please set APIKEY, APISECRETKEY, ACCESSTOKEN, ACCESSTOKENSECRET in your environment let api = kuon::TwitterAPI::newusingenv().await?;

let res = api.search_tweets().q("rust").send().await?; for tweet in res.statuses { println!("{}", tweet.text); } ```

Advanced Type-safe Usage

```rust use anyhow::Result;

[tokio::main]

async fn main() -> Result<()> { // Please set APIKEY, APISECRETKEY, ACCESSTOKEN, ACCESSTOKENSECRET in environment let api: kuon::TwitterAPI = kuon::TwitterAPI::newusingenv().await?; let res = api .searchtweets() .q("rust") // .geocode("geocode") // .lang("lang") // .locale("locale") // .resulttype("resulttype") // .count(100) // .until("2000-01-01") // .sinceid(0) // .maxid(100000000) // .includeentities(true) .send() .await;

match res {
    Ok(search_result) => {
        for tweet in search_result.statuses {
            println!("{}", tweet.text);
        }
    }
    Err(kuon::Error::TwitterAPIError(e, param_str)) => {
        // You can confirm a error originated from Twitter API.
        println!("{}", param_str);
        assert!(e.errors.len() > 0)
    }
    Err(kuon::Error::HTTPRequestError(e)) => {
        println!("{}", e);
        // Do something!
    }
    _ => panic!("Unexpected error!"),
}

Ok(())

} ```

See more details for /examples.

This crate is named after Japanese Virtual YouTuber Chitose Kudou