mastodon API rust lib elefren, fixed and updated. and also all ASYNC! NB. most examples are now wrong.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
Ondřej Hruška b10e5935ae
add page num counting to ItemsIter
3 anos atrás
src add page num counting to ItemsIter 3 anos atrás
.gitignore add .idea/ to .gitignore 3 anos atrás
CHANGELOG.md Add CHANGELOG entry for v0.18 5 anos atrás
Cargo.toml add pinging 3 anos atrás
LICENCE-APACHE Initial commit 7 anos atrás
LICENCE-MIT Initial commit 7 anos atrás
README.md Remove `HttpSend` and `HttpSender` 4 anos atrás
rustfmt.toml add new rustfmt.toml and reformat code 3 anos atrás

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(())
}