Skip to main content

Crate pickcat_api_collection

Crate pickcat_api_collection 

Source
Expand description

§pickcat-api-collection

Pickcat 社区 API(https://cdsq.dao3.fun/api/v1)的异步 Rust 客户端,基于 reqwest。接口文档见 https://pickcat-docs.xiaole6324.fun。

所有能力都挂在 PickcatAccound 上,按章节拆成 trait:

模块trait内容
authauth::UserBehavior会话、注册、邮箱验证、入站考试
useruser::UserProfileBehavior用户资料、邮箱、关注/粉丝、主题/回帖、徽章、等级、配额等
topictopic::TopicBehavior主题列表/推荐/详情、楼层、发布、投稿审核
tagtag::TagBehavior分区标签、侧边子标签
notificationnotification::NotificationBehavior通知未读汇总
reading_sessionreading_session::ReadingSessionBehavior阅读埋点上报
mediamedia::MediaBehavior文件上传/读取、头像、表情

§快速开始

use pickcat_api_collection::auth::UserBehavior;
use pickcat_api_collection::PickcatAccound;

#[tokio::main]
async fn main() -> Result<(), pickcat_api_collection::Error> {
    // 登录;后续请求自动携带会话 Cookie
    let account = PickcatAccound::new("you@example.com", "password").await?;

    let session = account.get_current_user_session().await?;
    println!(
        "{} Lv.{}",
        session.user.username, session.user.level.current
    );
    Ok(())
}

§鉴权

Pickcat 使用 Session(Cookie)而不是 JWT:登录成功后凭据由内部带 cookie store 的 reqwest::Client 保存,调用方无需手动传 token。

§错误

所有方法返回 Result,错误类型为 Error(请求失败 Error::Reqwest 或响应反序列化失败 Error::Serde)。

§写接口

POST /posts、POST /files 等写接口需要 Idempotency-Key 请求头,可用 topic::generate_idempotency_key 生成。

Modules§

auth
鉴权与入站考试:会话、注册、邮箱验证、考试流程。
dto
按 API 章节拆分的请求/响应 DTO。
media
媒体资源章节:文件上传/读取、头像、表情。
notification
通知章节(文档目前只记录了未读汇总接口)。
reading_session
阅读会话章节:阅读埋点上报。
tag
分区标签章节。
topic
主题与内容章节:主题列表/推荐/详情、楼层、发布主题/回帖、投稿审核。
user
用户章节:资料、邮箱、关注/粉丝、主题/回帖、徽章、动态、等级、配额等。

Structs§

PickcatAccound
已登录的 Pickcat 账号,是访问所有接口的入口。

Enums§

Error
调用 API 时可能出现的错误。