5 个版本
0.1.4 | 2021 年 3 月 30 日 |
---|---|
0.1.3 | 2021 年 3 月 18 日 |
0.1.2 | 2020 年 12 月 28 日 |
0.1.1 | 2020 年 12 月 27 日 |
0.1.0 | 2020 年 12 月 27 日 |
#5 in #invoice
50KB
1K SLoC
fakturoid.cz Rust API
Rust 语言访问在线会计服务 Fakturoid 的接口。
此库由 Josef Rokos 开发和维护([email protected])。它是非官方的,不能要求 Fakturoid 团队提供支持。
功能
- 账户详情
- 科目:创建、更新、删除、列表、筛选和全文
- 发票:创建、更新、删除、列表、筛选和全文、发票操作
示例
此库是异步的,因此您需要 Tokio 来执行库方法。 Cargo.toml
可能如下所示
[dependencies]
fakturoid = "0.1.4"
tokio = {version = "0.2", features = ["full"]}
获取对象详情
use fakturoid::models::Subject;
use tokio::prelude::*;
use fakturoid::client::Fakturoid;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let cli = Fakturoid::new(
"[email protected]",
"c08950e6s70f982dbca56295b123eff987237b9",
"yourslug",
Some("Rust Test API client ([email protected])")
);
let subject = cli.detail::<Subject>(11223344).await?;
println!("{:?}", subject);
Ok(())
}
更新对象
模型结构体的所有字段都具有类型 Option<...>
。如果某个字段具有 None
值,则该字段将不会被序列化,因此您可以创建给定类型的新的结构体并仅设置您想要更新的字段
use fakturoid::models::Subject;
use tokio::prelude::*;
use fakturoid::client::Fakturoid;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let cli = Fakturoid::new(
"[email protected]",
"c08950e6s70f982dbca56295b123eff987237b9",
"yourslug",
Some("Rust Test API client ([email protected])")
);
let mut subject = Subject::default(); // initialize all fields to None
subject.name = Some("Some other name".to_string());
let subject = cli.update(11223344, subject).await?;
println!("{:?}", subject);
Ok(())
}
如果成功,将返回更新后的对象。您可以用类似的方式创建新对象
use fakturoid::models::Subject;
use tokio::prelude::*;
use fakturoid::client::Fakturoid;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let cli = Fakturoid::new(
"[email protected]",
"c08950e6s70f982dbca56295b123eff987237b9",
"yourslug",
Some("Rust Test API client ([email protected])")
);
let mut subject = Subject::default(); // initialize all fields to None
subject.name = Some("Some other name".to_string()); // only mandatory fields can be set
let subject = cli.create(11223344, subject).await?;
println!("{:?}", subject);
Ok(())
}
获取科目列表
Fakturoid.cz API 以每页 20 项的形式返回所有包含 20 项以上的列表。这由 PagedResponse
结构体表示。可以通过此结构体的方法访问分页
...
let invoices = cli.list::<Invoice>(None).await?;
println!("{:?}", invoices.data()[0]);
let invoices = invoices.next_page().await?;
...
依赖关系
~9–13MB
~269K SLoC