Skip to main content

post3_server/s3/
extractors.rs

1use serde::Deserialize;
2
3/// Query params for GET /{bucket} — dispatches between ListObjectsV2, ListMultipartUploads,
4/// ListObjectVersions, and GetBucketLocation.
5#[derive(Debug, Default, Deserialize)]
6pub struct BucketGetQuery {
7    /// Presence of `?uploads` signals ListMultipartUploads
8    pub uploads: Option<String>,
9    /// Presence of `?versions` signals ListObjectVersions
10    pub versions: Option<String>,
11    /// Presence of `?location` signals GetBucketLocation
12    pub location: Option<String>,
13    #[serde(rename = "list-type")]
14    pub list_type: Option<i32>,
15    pub prefix: Option<String>,
16    #[serde(rename = "max-keys")]
17    pub max_keys: Option<i64>,
18    #[serde(rename = "continuation-token")]
19    pub continuation_token: Option<String>,
20    #[serde(rename = "start-after")]
21    pub start_after: Option<String>,
22    /// ListObjects v1 pagination marker
23    pub marker: Option<String>,
24    pub delimiter: Option<String>,
25    #[serde(rename = "encoding-type")]
26    pub encoding_type: Option<String>,
27    #[serde(rename = "key-marker")]
28    pub key_marker: Option<String>,
29    #[serde(rename = "upload-id-marker")]
30    pub upload_id_marker: Option<String>,
31    #[serde(rename = "max-uploads")]
32    pub max_uploads: Option<i32>,
33}
34
35/// Query params for POST /{bucket} — dispatches between DeleteObjects and other ops.
36#[derive(Debug, Default, Deserialize)]
37pub struct BucketPostQuery {
38    /// Presence of `?delete` signals DeleteObjects
39    pub delete: Option<String>,
40}
41
42/// Query params for /{bucket}/{*key} dispatchers (PUT, GET, DELETE, POST).
43#[derive(Debug, Default, Deserialize)]
44pub struct ObjectKeyQuery {
45    #[serde(rename = "uploadId")]
46    pub upload_id: Option<String>,
47    #[serde(rename = "partNumber")]
48    pub part_number: Option<i32>,
49    /// Presence of `?uploads` signals CreateMultipartUpload (POST only)
50    pub uploads: Option<String>,
51    #[serde(rename = "max-parts")]
52    pub max_parts: Option<i32>,
53    #[serde(rename = "part-number-marker")]
54    pub part_number_marker: Option<i32>,
55}