mastodon API rust lib elefren, fixed and updated. and also all ASYNC! NB. most examples are now wrong.
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
Ondřej Hruška b10e5935ae
add page num counting to ItemsIter
3 lat temu
src add page num counting to ItemsIter 3 lat temu
.gitignore add .idea/ to .gitignore 3 lat temu
CHANGELOG.md Add CHANGELOG entry for v0.18 5 lat temu
Cargo.toml add pinging 3 lat temu
LICENCE-APACHE Initial commit 7 lat temu
LICENCE-MIT Initial commit 7 lat temu
README.md Remove `HttpSend` and `HttpSender` 4 lat temu
rustfmt.toml add new rustfmt.toml and reformat code 3 lat temu

README.md

Elefren

A Wrapper for the Mastodon API.

Build Status Build Status Coverage Status crates.io Docs MIT/APACHE-2.0

Documentation

A wrapper around the API for Mastodon

Installation

To add elefren to your project, add the following to the [dependencies] section of your Cargo.toml

elefren = "0.22"

Example

In your Cargo.toml, make sure you enable the toml feature:

[dependencies]
elefren = { version = "0.22", features = ["toml"] }
// src/main.rs
extern crate elefren;

use std::error::Error;

use elefren::prelude::*;
use elefren::helpers::toml; // requires `features = ["toml"]`
use elefren::helpers::cli;

fn main() -> Result<(), Box<dyn Error>> {
    let mastodon = if let Ok(data) = toml::from_file("mastodon-data.toml") {
        Mastodon::from(data)
    } else {
        register()?
    };

    let you = mastodon.verify_credentials()?;

    println!("{:#?}", you);

    Ok(())
}

fn register() -> Result<Mastodon, Box<dyn Error>> {
    let registration = Registration::new("https://mastodon.social")
                                    .client_name("elefren-examples")
                                    .build()?;
    let mastodon = cli::authenticate(registration)?;

    // Save app data for using on the next run.
    toml::to_file(&*mastodon, "mastodon-data.toml")?;

    Ok(mastodon)
}

It also supports the Streaming API:

use elefren::prelude::*;
use elefren::entities::event::Event;

use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    let data = Data {
      base: "".into(),
      client_id: "".into(),
      client_secret: "".into(),
      redirect: "".into(),
      token: "".into(),
    };

    let client = Mastodon::from(data);

    for event in client.streaming_user()? {
        match event {
            Event::Update(ref status) => { /* .. */ },
            Event::Notification(ref notification) => { /* .. */ },
            Event::Delete(ref id) => { /* .. */ },
            Event::FiltersChanged => { /* .. */ },
        }
    }
    Ok(())
}