unpuber_core

unpuber_core 是 unpuber 的核心服务库,提供 pub 协议接口、包上传下载、权限与存储抽象。

功能

  • 实现 repository-spec-v2 相关 API
  • 处理 package 元数据、版本、上传者等逻辑
  • 抽象元数据后端(hive/sqlite)与包存储后端(file/s3

包使用方式(作为 Dart 依赖)

unpuber_core 通常不会单独作为可执行程序运行,而是由 unpuber_cli 负责组装并启动 HTTP 服务。

dependencies:
  unpuber_core: ^0.0.1

示例(最小化启动):

import 'package:unpuber_core/server.dart';

// 生产中请配合 PackageRepository / PackageStorage / UserStore 的具体实现

本地 CLI 运行(推荐,通过 unpuber_cli)

dart pub get
dart run packages/unpuber_cli/bin/unpuber_cli.dart \
  --host 0.0.0.0 \
  --port 4000 \
  --meta-backend sqlite \
  --package-backend file \
  --dir ./docker-data/unpuber

Docker 构建与运行(推荐,通过 unpuber_cli 镜像)

docker build -f packages/unpuber_cli/Dockerfile -t unpuber/unpuber_cli:local .

docker run --rm -it \
  -p 4000:4000 \
  -v "$(pwd)/docker-data/unpuber:/data" \
  unpuber/unpuber_cli:local

API 概览

认证与用户:

  • POST /api/auth/register
  • POST /api/auth/login
  • GET /api/auth/me

Publisher:

  • GET /api/publisher/me
  • PUT /api/publisher/me
  • GET /api/publisher/me/likes
  • POST /api/publisher/me/likes/<package>
  • DELETE /api/publisher/me/likes/<package>
  • GET /api/publisher/me/activity

Packages:

  • GET /api/packages
  • GET /api/packages/<package>
  • GET /api/packages/<package>/advisories
  • GET /api/packages/versions/new
  • POST /api/packages/versions/newUpload
  • GET /api/packages/versions/newUploadFinish
  • GET /api/packages/<name>/versions/<version>
  • GET /packages/<name>/versions/<version>.tar.gz

Uploaders:

  • GET /api/packages/<name>/uploaders
  • POST /api/packages/<name>/uploaders
  • PUT /api/packages/<name>/uploaders/<email>
  • DELETE /api/packages/<name>/uploaders/<email>