1extern crate alloc;
4use alloc::string::String;
5use alloc::vec::Vec;
6
7use serde::{Deserialize, Serialize};
8
9#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
11pub struct ObjectMeta {
12 pub content_type: String,
14 pub crc32: u32,
16 pub size: u64,
18 pub created_at: u64,
20 pub tags: Vec<(String, String)>,
22 #[cfg(feature = "versioning")]
24 pub version: u64,
25}
26
27#[derive(Clone, Debug, PartialEq)]
29pub struct ObjectInfo {
30 pub size: u64,
32 pub crc32: u32,
34 pub content_type: String,
36 pub created_at: u64,
38 #[cfg(feature = "versioning")]
40 pub version: u64,
41}
42
43impl ObjectInfo {
44 pub fn from_meta(meta: &ObjectMeta) -> Self {
46 ObjectInfo {
47 size: meta.size,
48 crc32: meta.crc32,
49 content_type: meta.content_type.clone(),
50 created_at: meta.created_at,
51 #[cfg(feature = "versioning")]
52 version: meta.version,
53 }
54 }
55}
56
57#[cfg(feature = "versioning")]
59#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
60pub struct VersionInfo {
61 pub version: u64,
63 pub size: u64,
65 pub created_at: u64,
67}
68
69#[derive(Clone, Debug, Default)]
71pub struct PutOptions {
72 pub content_type: Option<String>,
74 pub tags: Vec<(String, String)>,
76}