gitverse-sdk 1.2.0

Rust SDK for GitVerse API
Documentation
use gitverse_sdk::{Client, ClientConfig};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let token = std::env::var("GVT_TOKEN").expect("GVT_TOKEN env var required");

    let client = Client::new(ClientConfig {
        token,
        ..Default::default()
    })?;

    // 1. GET /user — текущий пользователь
    println!("=== GET /user ===");
    let user = client.get_authenticated().await?;
    let login = user.login.as_deref().unwrap_or("(none)");
    println!("  login: {login}");
    println!("  id: {:?}", user.id);
    println!("  OK\n");

    // 2. GET /users/{username} — публичный пользователь по имени
    println!("=== GET /users/{{username}} ===");
    let public_user = client.get_by_username(login).await?;
    println!("  login: {:?}", public_user.login);
    println!("  type: {:?}", public_user.r#type);
    println!("  OK\n");

    // 3. GET /user/repos — список репозиториев с query params
    println!("=== GET /user/repos ===");
    let opts = gitverse_sdk::QueryOptions {
        per_page: Some(3),
        ..Default::default()
    };
    let repos = client.list_for_authenticated_user(Some(&opts)).await?;
    println!("  repos count: {}", repos.len());
    for repo in &repos {
        println!("  - {} (stars: {})", repo.full_name, repo.stargazers_count);
    }
    println!("  OK\n");

    println!("All smoke tests passed!");
    Ok(())
}