pinterest_api/response/
media_response.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap as Map;
3
4#[derive(Serialize, Deserialize, Debug, Clone)]
5#[serde(rename_all = "lowercase")]
6pub enum MediaType {
7    Video,
8}
9
10impl std::fmt::Display for MediaType {
11    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
12        match self {
13            Self::Video => write!(f, "video"),
14        }
15    }
16}
17
18impl Default for MediaType {
19    fn default() -> Self {
20        Self::Video
21    }
22}
23
24#[derive(Serialize, Deserialize, Debug, Clone)]
25#[serde(rename_all = "lowercase")]
26pub enum Status {
27    Registered,
28    Processing,
29    Succeeded,
30    Failed,
31}
32
33impl std::fmt::Display for Status {
34    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
35        match self {
36            Self::Registered => write!(f, "registered"),
37            Self::Processing => write!(f, "processing"),
38            Self::Succeeded => write!(f, "succeeded"),
39            Self::Failed => write!(f, "failed"),
40        }
41    }
42}
43
44impl Default for Status {
45    fn default() -> Self {
46        Self::Registered
47    }
48}
49
50#[derive(Serialize, Deserialize, Debug, Clone, Default)]
51pub struct UploadParameters {
52    #[serde(rename = "x-amz-date")]
53    pub x_amz_date: String,
54    #[serde(rename = "x-amz-signature")]
55    pub x_amz_signature: String,
56    #[serde(rename = "x-amz-security-token")]
57    pub x_amz_security_token: String,
58    #[serde(rename = "x-amz-algorithm")]
59    pub x_amz_algorithm: String,
60    pub key: String,
61    pub policy: String,
62    #[serde(rename = "x-amz-credential")]
63    pub x_amz_credential: String,
64    #[serde(rename = "Content-Type")]
65    pub content_type: String,
66
67    #[serde(flatten, skip_serializing_if = "Map::is_empty")]
68    pub extra: Map<String, serde_json::Value>,
69}
70
71#[derive(Serialize, Deserialize, Debug, Clone, Default)]
72pub struct MediaGetResponse {
73    pub media_id: String,
74    pub media_type: MediaType,
75    pub status: Status,
76
77    #[serde(flatten, skip_serializing_if = "Map::is_empty")]
78    pub extra: Map<String, serde_json::Value>,
79}
80
81#[derive(Serialize, Deserialize, Debug, Clone, Default)]
82pub struct MediaPostResponse {
83    pub media_id: String,
84    pub media_type: MediaType,
85    pub upload_url: Status,
86    pub upload_parameters: UploadParameters,
87
88    #[serde(flatten, skip_serializing_if = "Map::is_empty")]
89    pub extra: Map<String, serde_json::Value>,
90}