leeca_proxmox

Crates.ioleeca_proxmox
lib.rsleeca_proxmox
version0.1.1
created_at2025-01-14 14:37:42.281186+00
updated_at2025-01-14 22:00:12.727062+00
descriptionA modern, safe, and async-first SDK for interacting with Proxmox Virtual Environment servers
homepagehttps://github.com/0x4rkh4m/leeca_proxmox
repositoryhttps://github.com/0x4rkh4m/leeca_proxmox
max_upload_size
id1516047
size163,480
4rkh4m (0x4rkh4m)

documentation

https://docs.rs/leeca_proxmox

README

Leeca Proxmox VE SDK for Rust

A modern, safe, and async-first SDK for interacting with Proxmox Virtual Environment servers, following industry best practices and clean architecture principles.

Features

  • ๐Ÿ”’ Enterprise-Grade Security

    • Token-based authentication
    • Comprehensive input validation
    • Secure default configurations
    • Thread-safe operations
    • Built-in SSL/TLS support
  • ๐Ÿš€ Modern Architecture

    • Async-first design using Tokio
    • Clean Architecture principles
    • Domain-Driven Design
    • SOLID principles
    • Immutable Value Objects
  • ๐Ÿ’ช Robust Error Handling

    • Type-safe error propagation
    • Detailed error contexts
    • Stack traces for debugging
    • Custom error types
    • Validation error handling
  • ๐Ÿงช Quality Assurance

    • Comprehensive test suite
    • Integration tests
    • Property-based testing
    • Mocked HTTP responses
    • CI/CD pipeline
  • ๐Ÿ“š Rich Documentation

    • Full API documentation
    • Code examples
    • Architecture guides
    • Best practices
    • Migration guides

Getting Started

Installation

cargo add leeca_proxmox

Quick Example

use leeca_proxmox::{ProxmoxClient, ProxmoxResult};

#[tokio::main]
async fn main() -> ProxmoxResult<()> {
    let mut client = ProxmoxClient::builder()
        .host("192.168.1.182")?
        .port(8006)?
        .credentials("leeca", "Leeca_proxmox1!", "pam")?
        .secure(false)
        .build()
        .await?;

    client.login().await?;
    println!("Authenticated: {}", client.is_authenticated());

    if let Some(token) = client.auth_token() {
        println!("Session Token: {}", token.value().await);
        println!("Session Token expires at: {:?}", token.expires_at().await);
    }

    if let Some(csrf) = client.csrf_token() {
        println!("CSRF Token: {}", csrf.value().await);
        println!("CSRF Token expires at: {:?}", csrf.expires_at().await);
    }

    Ok(())
}

Documentation

Project Guidelines

Development

Requirements

  • Rust (nightly)
  • Cargo
  • Tokio runtime

Quality Checks

# Run linter
cargo clippy

# Run formatter
cargo fmt

# Run tests with coverage
cargo tarpaulin

Project Status

See our CHANGELOG for version history and ROADMAP for future plans.

Legal

Community

Versioning

This project follows Semantic Versioning. See our CHANGELOG for version history.

โš ๏ธ Note: This project is in active development. APIs may change before 1.0.0 release.

Acknowledgments

  • Proxmox VE team for their excellent API documentation
  • Rust community for their tools and crates
  • All contributors
Commit count: 23

cargo fmt