2 个不稳定版本
0.2.0 | 2023 年 8 月 30 日 |
---|---|
0.1.1 |
|
0.1.0 | 2023 年 8 月 30 日 |
#3 在 #bsky
14KB
167 行
[!NOTE] 这段代码大部分可用。缺少一些功能,如
.post()
和一些其他小方法,但大部分功能已完成。
atproto_api
Rust 中简单的 ATProto 实现
AtpAgent
AtpAgent
适用于一般的 AT 协议操作。
初始化
可以像这样初始化
#[macro_use]
extern crate dotenv_codegen;
use serde_json::json
use atproto_api::{Agent, AtpAgent};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let agent = AtpAgent::new("https://fjall.net".to_string());
println!("{:?}", agent);
Ok(())
}
// AtpAgent { service: "https://fjall.net/", session: None }
获取请求
可以通过以下方式执行获取请求
// macros
use dotenv_codegen::dotenv;
use serde_json::json;
use atproto_api::{Agent, AtpAgent};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let agent = AtpAgent::new("https://bsky.social".to_string());
let agent = agent
.login(
dotenv!("BLUESKY_IDENTIFIER").to_string(),
dotenv!("BLUESKY_PASSWORD").to_string(),
)
.await?;
let record = json!({
"repo": "fjall.net",
"collection": "app.bsky.feed.post",
"rkey": "3k653jvvxlw2v"
});
let res = agent
.get("com.atproto.repo.getRecord".to_string(), record)
.await?;
println!("{:?}", res);
Ok(())
}
第一个参数是一个 lexicon,具体的可以通过滚动到页面底部查看“Lexicons”部分。第二个参数是一个记录,它是一个包含其他重要信息的 JSON 对象(在 com.atproto.repo.getRecord
的情况下,即 repo
、collection
和 rkey
)。
BskyAgent
[!NOTE]
BskyAgent
目前处于搁置状态,因为它包含了AtpAgent
。如果您现在正在使用这个库,请暂时使用AtpAgent
而不是BskyAgent
。
许可证
此代码根据 BSD 3-Clause 许可证授权。您可以在 此处 查看许可证。
依赖项
~4–16MB
~238K SLoC