2 个不稳定版本

0.2.0 2023 年 8 月 30 日
0.1.1 2023 年 8 月 30 日
0.1.0 2023 年 8 月 30 日

#3#bsky

BSD-3-Clause

14KB
167

[!NOTE] 这段代码大部分可用。缺少一些功能,如 .post() 和一些其他小方法,但大部分功能已完成。

atproto_api

Crates.io

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 的情况下,即 repocollectionrkey)。

BskyAgent

[!NOTE] BskyAgent 目前处于搁置状态,因为它包含了 AtpAgent。如果您现在正在使用这个库,请暂时使用 AtpAgent 而不是 BskyAgent

许可证

此代码根据 BSD 3-Clause 许可证授权。您可以在 此处 查看许可证。

依赖项

~4–16MB
~238K SLoC