#todoist #task #rest #label #section #user #projects

todoist-v2-rest

Todoist REST v2 API 的包装器

3 个不稳定版本

0.2.0 2023年11月10日
0.1.1 2023年11月10日
0.1.0 2023年11月10日

#7#todoist

AGPL-3.0-only

54KB
805

Todoist REST v2 API 的包装器。

目前还在开发中;所有 REST API 允许的项目、任务、标签和部分操作都已实现,但注释尚未实现。

有关 Todoist REST API 的更多信息,请参阅 https://developer.todoist.com/rest/v2/,或有关此包的文档,请参阅 https://docs.rs/todoist-v2-rest/latest/todoist_v2_rest/

请将任何错误报告到 GitHub 存储库 https://github.com/sj99642/todoist-v2-rest


lib.rs:

Todoist REST v2 API 的简单包装器。

https://developer.todoist.com/rest/v2

入门

在使用 Todoist API 之前,您必须拥有一个 API 令牌。要查找您自己的用户账户的 API 令牌,请访问 https://app.todoist.com/app/settings/integrations/developer 并查看“API 令牌”下的文本框。这应该是一个 40 字节的十六进制数字。

一旦您有了 API 令牌,您就可以创建一个 TodoistUser 结构体,然后将对该结构的引用传递到包中的任何函数,该函数将执行相关的底层 API 调用。

示例

以下是一个基本示例,它获取并打印所有用户的项目

use rustodoist_rest2::{TodoistUser, projects};
let user = TodoistUser::new("a2a72c2f394b265bb798d5dc4ef55be51443d519");
let user_projects = projects::get_projects(&user).expect("Couldn't load project list");
println!("{:?}", user_projects);

有五种不同类型的对象:项目、任务、部分、评论和标签。对于每种对象类型,都有获取该类型所有对象的列表、通过其 ID 获取单个对象、添加新对象、更新现有对象和删除现有对象的函数。"获取器"函数位于相关模块的顶层,前缀为 get_。要更新现有对象或创建新对象,将有一个用于此目的的结构体;填写您想要更改的字段,然后运行 upload() 方法。

例如,假设我们想要创建一个名为“创建 Todoist 集成”的新项目。我们希望它为洋红色,并希望它以板的形式出现。但我们不希望给它一个父 ID(因此它将是一个顶级项目),并且我们不想让它成为收藏夹(因此我们可以明确地将 false 传递给 API,或者我们可以只是不提及它)。为此,我们创建一个新的 NewProject 结构体,填写我们想要更改的字段,然后调用其 upload() 方法。执行此操作的完整代码将是

use rustodoist_rest2::{TodoistUser, projects, color::Color, projects::ViewStyle};
let user = TodoistUser::new("a2a72c2f394b265bb798d5dc4ef55be51443d519");
let new_project = projects::NewProject {
    name: "Make Todoist Integration".to_string(),
    parent_id: None,
    color: Some(Color::Magenta),
    is_favorite: None,
    view_style: Some(ViewStyle::Board),
};
let created_project = new_project.upload(&user).expect("Unable to create new project");
println!("Created new project: {:?}", created_project);

所有 upload() 函数都返回由 API 返回的新创建或更新的对象。

对于五种对象类型中的每一种,其函数和类型的完整描述都给出在顶层相应的模块中。

由于这个crate中的所有函数基本上都会进行API调用,这些调用可能会因为各种原因失败,因此它们都返回包含TodoistAPIError错误类型的Result。有关这些错误类型的详细信息,请参阅err模块。

依赖项

~4–16MB
~238K SLoC