#api-client #async-client #client #async-api #xray #api-bindings #marzban

marzban_api

A simple async client which abstracts/simplifies the interactions with the Marzban panel API (https://github.com/Gozargah/Marzban)

19 releases

new 0.2.8 Dec 7, 2024
0.2.7 Dec 7, 2024
0.1.9 Aug 3, 2024
0.1.8 Jun 22, 2024

#826 in Web programming

Download history 18/week @ 2024-09-11 5/week @ 2024-09-18 8/week @ 2024-09-25 964/week @ 2024-12-04

964 downloads per month

MIT license

90KB
2K SLoC

marzban_api

A simple async rust client which simplifies the interactions with the Marzban panel API.

Crates.io Docs.rs License

Updated for Marzban v0.7.0

Using

Either add it via Cargo:

cargo add marzban_api

or via Cargo.toml:

[dependencies]
marzban_api = "0.2.6"

Examples

Simple example of using marzban_api:

use marzban_api::client::MarzbanAPIClient;
use marzban_api::models::auth::BodyAdminTokenApiAdminTokenPost;
use tokio;

#[tokio::main]
async fn main() {
    // Initialize the API client
    let base_url = "https://api.example.com"; // Replace with your actual base URL
    let api_client = MarzbanAPIClient::new(base_url);

    // Authentication, successful authentication will insert token
    // into MarzbanAPIClient, being used for every new API interaction.
    let auth = BodyAdminTokenApiAdminTokenPost {
        grant_type: Some("password".to_string()),
        username: "admin".to_string(), // Replace with your actual admin username
        password: "password".to_string(), // Replace with your actual admin password
        scope: "".to_string(),
        client_id: None,
        client_secret: None,
    };

    match api_client.authenticate(&auth).await {
        Ok(_) => println!("Authentication successful"),
        Err(e) => eprintln!("Authentication failed: {:?}", e),
    }

    // Get current admin
    match api_client.get_current_admin().await {
        Ok(admin) => println!("Current admin: {:?}", admin),
        Err(e) => eprintln!("Failed to get current admin: {:?}", e),
    }
}

Features

  • Async API Client from Reqwest
  • Error handling
  • Full support for all Marzban API endpoints

Contributing

Contributions are welcome. Please fork the repository and submit a pull request for review.

License

This project is licensed under the MIT license. See the LICENSE file for more details.

Acknowledgements

Additional Information

For details on the Marzban API and schema, please refer to the Marzban API Documentation

Dependencies

~11–23MB
~325K SLoC