aria2-rs-yet

Crates.ioaria2-rs-yet
lib.rsaria2-rs-yet
version0.1.5
created_at2025-01-12 05:51:44.148977+00
updated_at2025-04-26 01:56:05.650265+00
descriptionYet Another Aria2 JSON-RPC Client.
homepage
repositoryhttps://github.com/hxzhao527/aria2-rs-yet
max_upload_size
id1512969
size63,418
Hao Xiang (hxzhao527)

documentation

README

Aria2-rs

Crates.io

Yet Another Aria2 JSON-RPC Client. Inspired by aria2-rs

Features

  • Simple direct call via websocket.
  • Notification from websocket.

example

download a file and print taks status.

use aria2_rs_yet::{Client, ConnectionMeta, Result};
use aria2_rs_yet::call::{AddUri, TellStatus, TellStatusField};
use aria2_rs_yet::options::Aria2Options;

#[tokio::main]
async fn main() -> Result<()> {
    tracing_subscriber::fmt().with_max_level(tracing::Level::INFO).init();
    
    let (client, _) = Client::connect(
        ConnectionMeta::new(
            "ws://localhost:6800/jsonrpc",
            Some("<rpc-secret>"),
        )
    ).await?;

    let gid = client.call(
        AddUri::new(
            vec!["https://github.com/hxzhao527/aria2-rs-yet/archive/refs/heads/master.zip"],
            Some(Aria2Options{
                dir: Some("/tmp".to_string()),
                out: Some("aria2-rs-yet.zip".to_string()),
                ..Default::default()
            }),
            None,
        )
    ).await?;
    println!("{:?}", gid);

    let status = client.call(
        TellStatus::new(gid).fields(Some([TellStatusField::Status, TellStatusField::Gid]))
    ).await?;
    println!("{:?}", status);

    // drop(client); // uncomment this line to see the client disconnecting
    println!("waiting for ctrl-c");
    tokio::signal::ctrl_c().await.unwrap();
    Ok(())
}

License

MIT License

Commit count: 12

cargo fmt