3 个版本
0.0.3 | 2023年11月10日 |
---|---|
0.0.2 | 2023年11月8日 |
0.0.1 | 2023年11月4日 |
#6 in #todoist
43KB
645 行
Todoist REST v2 API 的包装器。
重要:包已移动到 todoist-v2-rest。
目前仍在开发中;实现了 REST API 允许的所有项目和任务操作,但尚未实现部分、评论和标签。我预计在一周或两周内将全部实现。
有关 Todoist REST API 的更多信息,请参阅 https://developer.todoist.com/rest/v2/,或有关此包的文档,请参阅 https://docs.rs/rustodoist_rest2/latest/rustodoist_rest2/。
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() 方法。
例如,假设我们想要创建一个名为 "Make Todoist Integration" 的新项目。我们想要它为品红色,并希望它显示为板。但我们不希望给它一个父 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–19MB
~249K SLoC