messagebird_async/sms/
messagelist.rs

1use super::*;
2
3/// Helper for paging implementation
4///
5/// Currently not exposed/used. Requires some more thoughts on how to use this to implement a `Stream` of messages
6///
7/// TODO actually it would be awesome if this could be parsed back to `ListParameters`
8#[derive(Debug, Serialize, Deserialize, Eq, PartialEq)]
9pub struct Links {
10    first: Option<String>,
11    previous: Option<String>,
12    next: Option<String>,
13    last: Option<String>,
14}
15
16/// BirdedMessage
17///
18/// A message as queried from the MessageBird API.
19/// Refer to `SendableMessage` for an object which can be
20/// sent.
21///
22/// Only meant for receiving
23#[derive(Debug, Serialize, Deserialize, Eq, PartialEq)]
24pub struct MessageList {
25    #[serde(rename = "offset")]
26    offset: usize,
27    #[serde(rename = "limit")]
28    limit: usize,
29    #[serde(rename = "count")]
30    count: usize,
31    #[serde(rename = "totalCount")]
32    available: usize,
33    #[serde(rename = "links")]
34    links: Option<Links>,
35    #[serde(rename = "items")]
36    messages: Vec<Message>,
37}
38
39#[cfg(test)]
40mod test {
41    use super::*;
42
43    static RAW_NONE: &str = r#"
44{
45    "offset": 15,
46    "limit": 99,
47    "count": 0,
48    "totalCount": 0,
49    "links": {
50        "first": "https://rest.messagebird.com/messages/?offset=0&recipient=49333333&direction=mt",
51        "previous": null,
52        "next": null,
53        "last": "https://rest.messagebird.com/messages/?offset=0&recipient=49333333&direction=mt"
54    },
55    "items": [
56    ]
57}
58    "#;
59
60    static RAW_ONE: &str = r#"
61{
62    "offset": 0,
63    "limit": 20,
64    "count": 1,
65    "totalCount": 1,
66    "links": {
67        "first": "https://rest.messagebird.com/messages/?offset=0&recipient=49333333&direction=mt",
68        "previous": null,
69        "next": null,
70        "last": "https://rest.messagebird.com/messages/?offset=0&recipient=49333333&direction=mt"
71    },
72    "items": [
73        {
74            "id": "4782ca7d6b6845ffa5c7ba5222a72e59",
75            "href": "https://rest.messagebird.com/messages/4782ca7d6b6845ffa5c7ba5222a72e59",
76            "direction": "mt",
77            "type": "sms",
78            "originator": "+497777777",
79            "body": "fun",
80            "reference": null,
81            "validity": null,
82            "gateway": 10,
83            "typeDetails": {},
84            "datacoding": "plain",
85            "mclass": 1,
86            "scheduledDatetime": null,
87            "createdDatetime": "2018-10-07T09:34:30+00:00",
88            "recipients": {
89                "totalCount": 1,
90                "totalSentCount": 1,
91                "totalDeliveredCount": 1,
92                "totalDeliveryFailedCount": 0,
93                "items": [
94                    {
95                        "recipient": 49333333,
96                        "originator": null,
97                        "status": "delivered",
98                        "statusDatetime": "2018-10-07T09:34:36+00:00"
99                    }
100                ]
101            }
102        }
103    ]
104}
105    "#;
106
107    static RAW_MULTI: &str = r#"
108{
109    "offset": 0,
110    "limit": 20,
111    "count": 7,
112    "totalCount": 7,
113    "links": {
114        "first": "https://rest.messagebird.com/messages/?offset=0&recipient=49333333&direction=mt",
115        "previous": null,
116        "next": null,
117        "last": "https://rest.messagebird.com/messages/?offset=0&recipient=49333333&direction=mt"
118    },
119    "items": [
120        {
121            "id": "4782ca7d6b6845ffa5c7ba5222a72e59",
122            "href": "https://rest.messagebird.com/messages/4782ca7d6b6845ffa5c7ba5222a72e59",
123            "direction": "mt",
124            "type": "sms",
125            "originator": "+497777777",
126            "body": "fun",
127            "reference": null,
128            "validity": null,
129            "gateway": 10,
130            "typeDetails": {},
131            "datacoding": "plain",
132            "mclass": 1,
133            "scheduledDatetime": null,
134            "createdDatetime": "2018-10-07T09:34:30+00:00",
135            "recipients": {
136                "totalCount": 1,
137                "totalSentCount": 1,
138                "totalDeliveredCount": 1,
139                "totalDeliveryFailedCount": 0,
140                "items": [
141                    {
142                        "recipient": 49333333,
143                        "originator": null,
144                        "status": "delivered",
145                        "statusDatetime": "2018-10-07T09:34:36+00:00"
146                    }
147                ]
148            }
149        },
150        {
151            "id": "fc9c4b7f3fe1472e95420b203baf8759",
152            "href": "https://rest.messagebird.com/messages/fc9c4b7f3fe1472e95420b203baf8759",
153            "direction": "mt",
154            "type": "sms",
155            "originator": "+497777777",
156            "body": "fun",
157            "reference": null,
158            "validity": null,
159            "gateway": 10,
160            "typeDetails": {},
161            "datacoding": "plain",
162            "mclass": 1,
163            "scheduledDatetime": null,
164            "createdDatetime": "2018-09-26T17:51:12+00:00",
165            "recipients": {
166                "totalCount": 1,
167                "totalSentCount": 1,
168                "totalDeliveredCount": 1,
169                "totalDeliveryFailedCount": 0,
170                "items": [
171                    {
172                        "recipient": 49333333,
173                        "originator": null,
174                        "status": "delivered",
175                        "statusDatetime": "2018-09-26T17:51:17+00:00"
176                    }
177                ]
178            }
179        },
180        {
181            "id": "159995298a6842488a874bd8ab1fa48c",
182            "href": "https://rest.messagebird.com/messages/159995298a6842488a874bd8ab1fa48c",
183            "direction": "mt",
184            "type": "sms",
185            "originator": "+497777777",
186            "body": "fun",
187            "reference": null,
188            "validity": null,
189            "gateway": 10,
190            "typeDetails": {},
191            "datacoding": "plain",
192            "mclass": 1,
193            "scheduledDatetime": null,
194            "createdDatetime": "2018-09-25T23:13:50+00:00",
195            "recipients": {
196                "totalCount": 1,
197                "totalSentCount": 1,
198                "totalDeliveredCount": 1,
199                "totalDeliveryFailedCount": 0,
200                "items": [
201                    {
202                        "recipient": 49333333,
203                        "originator": null,
204                        "status": "delivered",
205                        "statusDatetime": "2018-09-25T23:13:55+00:00"
206                    }
207                ]
208            }
209        },
210        {
211            "id": "8c67231711024c66ac0b5e41504d41ee",
212            "href": "https://rest.messagebird.com/messages/8c67231711024c66ac0b5e41504d41ee",
213            "direction": "mt",
214            "type": "sms",
215            "originator": "YourName",
216            "body": "This",
217            "reference": null,
218            "validity": null,
219            "gateway": 10,
220            "typeDetails": {},
221            "datacoding": "plain",
222            "mclass": 1,
223            "scheduledDatetime": null,
224            "createdDatetime": "2018-09-25T22:36:42+00:00",
225            "recipients": {
226                "totalCount": 1,
227                "totalSentCount": 1,
228                "totalDeliveredCount": 1,
229                "totalDeliveryFailedCount": 0,
230                "items": [
231                    {
232                        "recipient": 49333333,
233                        "originator": null,
234                        "status": "delivered",
235                        "statusDatetime": "2018-09-25T22:42:06+00:00"
236                    }
237                ]
238            }
239        },
240        {
241            "id": "a5473cb63a7b49e3a0a65f090e7861f6",
242            "href": "https://rest.messagebird.com/messages/a5473cb63a7b49e3a0a65f090e7861f6",
243            "direction": "mt",
244            "type": "sms",
245            "originator": "YourName",
246            "body": "This is a test message",
247            "reference": null,
248            "validity": null,
249            "gateway": 10,
250            "typeDetails": {},
251            "datacoding": "plain",
252            "mclass": 1,
253            "scheduledDatetime": null,
254            "createdDatetime": "2018-09-25T22:20:04+00:00",
255            "recipients": {
256                "totalCount": 1,
257                "totalSentCount": 1,
258                "totalDeliveredCount": 1,
259                "totalDeliveryFailedCount": 0,
260                "items": [
261                    {
262                        "recipient": 49333333,
263                        "originator": null,
264                        "status": "delivered",
265                        "statusDatetime": "2018-09-25T22:42:31+00:00"
266                    }
267                ]
268            }
269        },
270        {
271            "id": "31bb3bce954b4bdba0e8b5716ed4ac25",
272            "href": "https://rest.messagebird.com/messages/31bb3bce954b4bdba0e8b5716ed4ac25",
273            "direction": "mt",
274            "type": "sms",
275            "originator": "YourName",
276            "body": "This is a test message",
277            "reference": null,
278            "validity": null,
279            "gateway": 10,
280            "typeDetails": {},
281            "datacoding": "plain",
282            "mclass": 1,
283            "scheduledDatetime": null,
284            "createdDatetime": "2018-09-25T22:19:42+00:00",
285            "recipients": {
286                "totalCount": 1,
287                "totalSentCount": 1,
288                "totalDeliveredCount": 1,
289                "totalDeliveryFailedCount": 0,
290                "items": [
291                    {
292                        "recipient": 49333333,
293                        "originator": null,
294                        "status": "delivered",
295                        "statusDatetime": "2018-09-25T22:42:04+00:00"
296                    }
297                ]
298            }
299        },
300        {
301            "id": "aabcca29aa4c45e0963e47e713a073e3",
302            "href": "https://rest.messagebird.com/messages/aabcca29aa4c45e0963e47e713a073e3",
303            "direction": "mt",
304            "type": "sms",
305            "originator": "test",
306            "body": "This is a test message",
307            "reference": null,
308            "validity": null,
309            "gateway": 10,
310            "typeDetails": {},
311            "datacoding": "plain",
312            "mclass": 1,
313            "scheduledDatetime": null,
314            "createdDatetime": "2018-09-03T00:41:26+00:00",
315            "recipients": {
316                "totalCount": 1,
317                "totalSentCount": 1,
318                "totalDeliveredCount": 1,
319                "totalDeliveryFailedCount": 0,
320                "items": [
321                    {
322                        "recipient": 49333333,
323                        "originator": null,
324                        "status": "delivered",
325                        "statusDatetime": "2018-09-03T00:41:33+00:00"
326                    }
327                ]
328            }
329        }
330    ]
331}
332    "#;
333
334    deser_roundtrip!(message_list_none_deser, MessageList, RAW_NONE);
335    // TODO origin will not be present and as such the final compare will fail
336    //deser_roundtrip!(message_list_one_deser, MessageList, RAW_ONE);
337    //deser_roundtrip!(message_list_multi_deser, MessageList, RAW_MULTI);
338
339}