Crate todoist_api

Crate todoist_api 

Source
Expand description

§Todoist-api

A Rust wrapper for the Todoist REST API v2.

§Features

  • Async/await support
  • Full CRUD operations for tasks
  • Project and label management
  • Comprehensive error handling with specific error types
  • Rate limiting detection and retry information
  • Serde serialization/deserialization

§Example

use todoist_api::{TodoistWrapper, TodoistError, TodoistResult};
use todoist_api::models::CreateTaskArgs;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let todoist = TodoistWrapper::new("your-api-token".to_string());

    // Get all tasks with error handling
    match todoist.get_tasks().await {
        Ok(tasks) => println!("Found {} tasks", tasks.len()),
        Err(TodoistError::RateLimited { retry_after, message }) => {
            println!("Rate limited: {} (retry after {} seconds)", message, retry_after.unwrap_or(0));
        }
        Err(TodoistError::AuthenticationError { message }) => {
            println!("Authentication failed: {}", message);
        }
        Err(e) => println!("Other error: {}", e),
    }

    // Create a new task
    let args = CreateTaskArgs {
        content: "Buy groceries".to_string(),
        project_id: None,
        ..Default::default()
    };
    let new_task = todoist.create_task(&args).await?;
    println!("Created task: {}", new_task.content);

    Ok(())
}

Re-exports§

pub use wrapper::TodoistWrapper;
pub use models::TodoistError;
pub use models::TodoistResult;
pub use models::*;

Modules§

models
wrapper