mailinator_rs/api/message/
inbox.rs1use crate::path::AsUrl;
2use serde::{Deserialize, Serialize};
3use serde_qs as qs;
4
5#[derive(Debug, Serialize, Clone)]
6pub enum Sorting {
7 #[serde(rename = "ascending")]
8 Ascending,
9 #[serde(rename = "descending")]
10 Descending,
11}
12
13#[derive(Debug, Builder, Default, Serialize, Clone)]
14pub struct FetchInboxRequestQueryParams {
15 #[serde(skip_serializing_if = "Option::is_none")]
16 skip: Option<usize>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 limit: Option<usize>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 sort: Option<Sorting>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 decode_subject: Option<bool>,
23}
24
25#[derive(Debug, Builder, Default)]
26pub struct FetchInboxRequest {
27 domain: String,
28 inbox: String,
29 query_params: Option<FetchInboxRequestQueryParams>,
30}
31
32impl AsUrl for FetchInboxRequest {
33 fn as_url_path(self) -> String {
34 let Self {
35 domain,
36 inbox,
37 query_params,
38 } = self;
39
40 query_params.map_or_else(|| format!(
41 "/api/v2/domains/{domain}/inboxes/{inbox}"
42 ), |q|{
43 let qsp = qs::to_string(&q).expect(
44 "Failed to serialize query string params",);
45 format!("/api/v2/domains/{domain}/inboxes/{inbox}?{qsp}")
46 })
47 }
48}
49
50#[derive(Debug, Clone, Deserialize)]
51pub struct Msg {
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub subject: Option<String>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub domain: Option<String>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub from: Option<String>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub id: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub to: Option<String>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub time: Option<u64>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub seconds_ago: Option<u64>,
66}
67
68#[derive(Debug, Clone, Deserialize)]
69pub struct FetchInboxResponse {
70 pub domain: String,
71 pub to: String,
72 pub msgs: Vec<Msg>,
73}