pinterest_api/response/
media_response.rs1use 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}