Skip to main content

docker_registry/
types.rs

1#![warn(missing_docs)]
2
3//! Docker Hub 类型定义
4//!
5//! 定义了与 Docker Hub 交互所需的各种数据结构。
6
7use serde::{Deserialize, Serialize};
8
9/// Docker Hub 镜像 Manifest
10///
11/// 表示 Docker 镜像的元数据,包含镜像的架构、操作系统、配置和层信息。
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct ImageManifest {
14    /// 镜像的架构,如 amd64、arm64 等
15    pub architecture: String,
16    /// 镜像的操作系统,如 linux、windows 等
17    pub os: String,
18    /// 镜像的配置信息
19    pub config: ManifestConfig,
20    /// 镜像的层列表
21    pub layers: Vec<ManifestLayer>,
22}
23
24/// Manifest 配置
25///
26/// 表示镜像配置的元数据,包含配置文件的媒体类型、大小和摘要。
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct ManifestConfig {
29    /// 配置文件的媒体类型
30    pub media_type: String,
31    /// 配置文件的大小(字节)
32    pub size: u64,
33    /// 配置文件的摘要
34    pub digest: String,
35}
36
37/// Manifest 层
38///
39/// 表示镜像层的元数据,包含层的媒体类型、大小和摘要。
40#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct ManifestLayer {
42    /// 层文件的媒体类型
43    pub media_type: String,
44    /// 层文件的大小(字节)
45    pub size: u64,
46    /// 层文件的摘要
47    pub digest: String,
48}
49
50/// Docker Hub 认证响应
51///
52/// 表示 Docker Hub 认证 API 的响应,包含认证令牌和相关信息。
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct AuthResponse {
55    /// 认证令牌,用于后续 API 请求的授权
56    pub token: String,
57    /// 访问令牌(可选)
58    pub access_token: Option<String>,
59    /// 令牌过期时间(可选)
60    pub expires_in: Option<u32>,
61    /// 令牌作用域(可选)
62    pub scope: Option<String>,
63    /// 令牌类型(可选)
64    pub token_type: Option<String>,
65}
66
67/// 下载进度
68///
69/// 表示镜像下载的进度信息,包含已下载大小、总大小和完成百分比。
70#[derive(Debug, Clone)]
71pub struct DownloadProgress {
72    /// 已下载的大小(字节)
73    pub downloaded: u64,
74    /// 总大小(字节)
75    pub total: u64,
76    /// 完成百分比(0-100)
77    pub percentage: f64,
78}