3 个不稳定版本
0.2.0 | 2023年11月10日 |
---|---|
0.1.1 | 2023年11月10日 |
0.1.0 | 2023年11月10日 |
#7 在 #todoist 中
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