59 lines
1.5 KiB
Rust
59 lines
1.5 KiB
Rust
//! # Immich SDK
|
|
//!
|
|
//! A modern Rust SDK for the [Immich](https://immich.app/) photo and video management server.
|
|
//!
|
|
//! ## Features
|
|
//!
|
|
//! - **Async-first**: Built on `tokio` and `reqwest` for modern async Rust
|
|
//! - **Builder pattern**: Ergonomic API with fluent builders
|
|
//! - **Type-safe**: Strongly typed models
|
|
//! - **Error handling**: Comprehensive error types with `thiserror`
|
|
//!
|
|
//! ## Quick Start
|
|
//!
|
|
//! ```rust,no_run
|
|
//! use immich_sdk::Client;
|
|
//!
|
|
//! #[tokio::main]
|
|
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
//! // Create a client
|
|
//! let client = Client::from_url("https://immich.example.com")?
|
|
//! .with_api_key("your-api-key");
|
|
//!
|
|
//! // List albums
|
|
//! let albums = client.albums().list().execute().await?;
|
|
//! println!("Found {} albums", albums.len());
|
|
//!
|
|
//! Ok(())
|
|
//! }
|
|
//! ```
|
|
//!
|
|
//! ## Authentication
|
|
//!
|
|
//! The SDK supports API key authentication:
|
|
//!
|
|
//! ```rust,ignore
|
|
//! use immich_sdk::Client;
|
|
//!
|
|
//! let client = Client::from_url("https://immich.example.com")?
|
|
//! .with_api_key("your-api-key-here");
|
|
//! # Ok::<(), Box<dyn std::error::Error>>(())
|
|
//! ```
|
|
|
|
#![warn(missing_docs)]
|
|
|
|
pub mod apis;
|
|
pub mod client;
|
|
pub mod error;
|
|
pub mod models;
|
|
|
|
// Re-export main types
|
|
pub use client::{Client, Config};
|
|
pub use error::{ImmichError, Result};
|
|
|
|
// Re-export models
|
|
pub use models::*;
|
|
|
|
/// Immich API version this SDK targets
|
|
pub const IMMICH_API_VERSION: &str = env!("CARGO_PKG_VERSION");
|