Logo花火漫画开发文档
函数详情

工具函数

add-latest-chapter 与 uploader-get-rclone-conf,供自动化程序和上架客户端调用

本页面描述两个工具类 Edge Function,由自动化脚本或上架客户端调用,不面向终端用户。

add-latest-chapter

上传工具在完成章节图片上传后调用此函数,向数据库写入章节记录并更新漫画元数据。

属性
方法POST
JWT 校验
调用方上传脚本 / 管理后台(service_role 或 admin/editor 用户)

鉴权

函数支持两种身份:

  • service_role:直接解码 JWT payload 判断 role === 'service_role',跳过 RPC 检查
  • 普通用户 JWT:调用 is_admin_or_editor() RPC 验证权限,非 admin/editor 返回 403

请求参数

Prop

Type

处理流程

  1. chapters 表插入新记录(idx 由数据库触发器自动递增)
  2. 重复插入返回 409(唯一约束冲突,code: 23505
  3. 更新 comics 表的 latest_chapter_titlelatest_chapter_updated_at

响应

成功返回 201 + 新插入的章节完整记录。

此函数使用 OLD_SUPABASE_SERVICE_ROLE_KEY 执行写入操作,绕过 RLS。


uploader-get-rclone-conf

为上传客户端提供加密后的 Rclone 配置文件,用于将漫画图片上传至对象存储(Cloudflare R2)。

属性
方法POST
JWT 校验
调用方上架客户端

鉴权

add-latest-chapter 相同,支持 service_role 直接通过或普通用户 is_admin_or_editor() RPC 验证。

处理流程

  1. 从环境变量 RCLONE_CONF_CONTENT(Base64 编码)解码出 Rclone 配置明文
  2. 使用 UPLOADER_AES_KEY(256-bit Hex)进行 AES-256-GCM 加密
  3. 返回 { iv, ciphertext }(均为 Base64),客户端使用对称密钥解密后写入本地 rclone.conf

响应

{
  "iv": "Base64 编码的 12 字节随机 IV",
  "ciphertext": "Base64 编码的 AES-GCM 密文(含 Auth Tag)"
}

配置文件包含对象存储的访问凭证,传输过程必须加密。客户端需预置 UPLOADER_AES_KEY 用于解密。

Secrets 依赖

Secret说明
RCLONE_CONF_CONTENTRclone 配置文件内容(Base64 编码)
UPLOADER_AES_KEYAES-256 密钥(64 字符 Hex)
OLD_SUPABASE_SERVICE_ROLE_KEY两个函数共用,执行 Admin 操作

On this page