1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5use std::fmt::Debug;
6
7pub trait TDDeviceToken: Debug + RObject {}
9
10#[derive(Debug, Clone, Deserialize, Serialize, Default)]
12#[serde(tag = "@type")]
13pub enum DeviceToken {
14 #[doc(hidden)]
15 #[default]
16 _Default,
17 #[serde(rename = "deviceTokenApplePush")]
19 ApplePush(DeviceTokenApplePush),
20 #[serde(rename = "deviceTokenApplePushVoIP")]
22 ApplePushVoIP(DeviceTokenApplePushVoIP),
23 #[serde(rename = "deviceTokenBlackBerryPush")]
25 BlackBerryPush(DeviceTokenBlackBerryPush),
26 #[serde(rename = "deviceTokenFirebaseCloudMessaging")]
28 FirebaseCloudMessaging(DeviceTokenFirebaseCloudMessaging),
29 #[serde(rename = "deviceTokenMicrosoftPush")]
31 MicrosoftPush(DeviceTokenMicrosoftPush),
32 #[serde(rename = "deviceTokenMicrosoftPushVoIP")]
34 MicrosoftPushVoIP(DeviceTokenMicrosoftPushVoIP),
35 #[serde(rename = "deviceTokenSimplePush")]
37 SimplePush(DeviceTokenSimplePush),
38 #[serde(rename = "deviceTokenTizenPush")]
40 TizenPush(DeviceTokenTizenPush),
41 #[serde(rename = "deviceTokenUbuntuPush")]
43 UbuntuPush(DeviceTokenUbuntuPush),
44 #[serde(rename = "deviceTokenWebPush")]
46 WebPush(DeviceTokenWebPush),
47 #[serde(rename = "deviceTokenWindowsPush")]
49 WindowsPush(DeviceTokenWindowsPush),
50}
51
52impl RObject for DeviceToken {
53 #[doc(hidden)]
54 fn extra(&self) -> Option<&str> {
55 match self {
56 DeviceToken::ApplePush(t) => t.extra(),
57 DeviceToken::ApplePushVoIP(t) => t.extra(),
58 DeviceToken::BlackBerryPush(t) => t.extra(),
59 DeviceToken::FirebaseCloudMessaging(t) => t.extra(),
60 DeviceToken::MicrosoftPush(t) => t.extra(),
61 DeviceToken::MicrosoftPushVoIP(t) => t.extra(),
62 DeviceToken::SimplePush(t) => t.extra(),
63 DeviceToken::TizenPush(t) => t.extra(),
64 DeviceToken::UbuntuPush(t) => t.extra(),
65 DeviceToken::WebPush(t) => t.extra(),
66 DeviceToken::WindowsPush(t) => t.extra(),
67
68 _ => None,
69 }
70 }
71 #[doc(hidden)]
72 fn client_id(&self) -> Option<i32> {
73 match self {
74 DeviceToken::ApplePush(t) => t.client_id(),
75 DeviceToken::ApplePushVoIP(t) => t.client_id(),
76 DeviceToken::BlackBerryPush(t) => t.client_id(),
77 DeviceToken::FirebaseCloudMessaging(t) => t.client_id(),
78 DeviceToken::MicrosoftPush(t) => t.client_id(),
79 DeviceToken::MicrosoftPushVoIP(t) => t.client_id(),
80 DeviceToken::SimplePush(t) => t.client_id(),
81 DeviceToken::TizenPush(t) => t.client_id(),
82 DeviceToken::UbuntuPush(t) => t.client_id(),
83 DeviceToken::WebPush(t) => t.client_id(),
84 DeviceToken::WindowsPush(t) => t.client_id(),
85
86 _ => None,
87 }
88 }
89}
90
91impl DeviceToken {
92 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
93 Ok(serde_json::from_str(json.as_ref())?)
94 }
95 #[doc(hidden)]
96 pub fn _is_default(&self) -> bool {
97 matches!(self, DeviceToken::_Default)
98 }
99}
100
101impl AsRef<DeviceToken> for DeviceToken {
102 fn as_ref(&self) -> &DeviceToken {
103 self
104 }
105}
106
107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
109pub struct DeviceTokenApplePush {
110 #[doc(hidden)]
111 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
112 extra: Option<String>,
113 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
114 client_id: Option<i32>,
115 #[serde(default)]
118 device_token: String,
119 #[serde(default)]
122 is_app_sandbox: bool,
123}
124
125impl RObject for DeviceTokenApplePush {
126 #[doc(hidden)]
127 fn extra(&self) -> Option<&str> {
128 self.extra.as_deref()
129 }
130 #[doc(hidden)]
131 fn client_id(&self) -> Option<i32> {
132 self.client_id
133 }
134}
135
136impl TDDeviceToken for DeviceTokenApplePush {}
137
138impl DeviceTokenApplePush {
139 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
140 Ok(serde_json::from_str(json.as_ref())?)
141 }
142 pub fn builder() -> DeviceTokenApplePushBuilder {
143 let mut inner = DeviceTokenApplePush::default();
144 inner.extra = Some(Uuid::new_v4().to_string());
145
146 DeviceTokenApplePushBuilder { inner }
147 }
148
149 pub fn device_token(&self) -> &String {
150 &self.device_token
151 }
152
153 pub fn is_app_sandbox(&self) -> bool {
154 self.is_app_sandbox
155 }
156}
157
158#[doc(hidden)]
159pub struct DeviceTokenApplePushBuilder {
160 inner: DeviceTokenApplePush,
161}
162
163#[deprecated]
164pub type RTDDeviceTokenApplePushBuilder = DeviceTokenApplePushBuilder;
165
166impl DeviceTokenApplePushBuilder {
167 pub fn build(&self) -> DeviceTokenApplePush {
168 self.inner.clone()
169 }
170
171 pub fn device_token<T: AsRef<str>>(&mut self, device_token: T) -> &mut Self {
172 self.inner.device_token = device_token.as_ref().to_string();
173 self
174 }
175
176 pub fn is_app_sandbox(&mut self, is_app_sandbox: bool) -> &mut Self {
177 self.inner.is_app_sandbox = is_app_sandbox;
178 self
179 }
180}
181
182impl AsRef<DeviceTokenApplePush> for DeviceTokenApplePush {
183 fn as_ref(&self) -> &DeviceTokenApplePush {
184 self
185 }
186}
187
188impl AsRef<DeviceTokenApplePush> for DeviceTokenApplePushBuilder {
189 fn as_ref(&self) -> &DeviceTokenApplePush {
190 &self.inner
191 }
192}
193
194#[derive(Debug, Clone, Default, Serialize, Deserialize)]
196pub struct DeviceTokenApplePushVoIP {
197 #[doc(hidden)]
198 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
199 extra: Option<String>,
200 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
201 client_id: Option<i32>,
202 #[serde(default)]
205 device_token: String,
206 #[serde(default)]
209 is_app_sandbox: bool,
210 #[serde(default)]
213 encrypt: bool,
214}
215
216impl RObject for DeviceTokenApplePushVoIP {
217 #[doc(hidden)]
218 fn extra(&self) -> Option<&str> {
219 self.extra.as_deref()
220 }
221 #[doc(hidden)]
222 fn client_id(&self) -> Option<i32> {
223 self.client_id
224 }
225}
226
227impl TDDeviceToken for DeviceTokenApplePushVoIP {}
228
229impl DeviceTokenApplePushVoIP {
230 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
231 Ok(serde_json::from_str(json.as_ref())?)
232 }
233 pub fn builder() -> DeviceTokenApplePushVoIPBuilder {
234 let mut inner = DeviceTokenApplePushVoIP::default();
235 inner.extra = Some(Uuid::new_v4().to_string());
236
237 DeviceTokenApplePushVoIPBuilder { inner }
238 }
239
240 pub fn device_token(&self) -> &String {
241 &self.device_token
242 }
243
244 pub fn is_app_sandbox(&self) -> bool {
245 self.is_app_sandbox
246 }
247
248 pub fn encrypt(&self) -> bool {
249 self.encrypt
250 }
251}
252
253#[doc(hidden)]
254pub struct DeviceTokenApplePushVoIPBuilder {
255 inner: DeviceTokenApplePushVoIP,
256}
257
258#[deprecated]
259pub type RTDDeviceTokenApplePushVoIPBuilder = DeviceTokenApplePushVoIPBuilder;
260
261impl DeviceTokenApplePushVoIPBuilder {
262 pub fn build(&self) -> DeviceTokenApplePushVoIP {
263 self.inner.clone()
264 }
265
266 pub fn device_token<T: AsRef<str>>(&mut self, device_token: T) -> &mut Self {
267 self.inner.device_token = device_token.as_ref().to_string();
268 self
269 }
270
271 pub fn is_app_sandbox(&mut self, is_app_sandbox: bool) -> &mut Self {
272 self.inner.is_app_sandbox = is_app_sandbox;
273 self
274 }
275
276 pub fn encrypt(&mut self, encrypt: bool) -> &mut Self {
277 self.inner.encrypt = encrypt;
278 self
279 }
280}
281
282impl AsRef<DeviceTokenApplePushVoIP> for DeviceTokenApplePushVoIP {
283 fn as_ref(&self) -> &DeviceTokenApplePushVoIP {
284 self
285 }
286}
287
288impl AsRef<DeviceTokenApplePushVoIP> for DeviceTokenApplePushVoIPBuilder {
289 fn as_ref(&self) -> &DeviceTokenApplePushVoIP {
290 &self.inner
291 }
292}
293
294#[derive(Debug, Clone, Default, Serialize, Deserialize)]
296pub struct DeviceTokenBlackBerryPush {
297 #[doc(hidden)]
298 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
299 extra: Option<String>,
300 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
301 client_id: Option<i32>,
302 #[serde(default)]
305 token: String,
306}
307
308impl RObject for DeviceTokenBlackBerryPush {
309 #[doc(hidden)]
310 fn extra(&self) -> Option<&str> {
311 self.extra.as_deref()
312 }
313 #[doc(hidden)]
314 fn client_id(&self) -> Option<i32> {
315 self.client_id
316 }
317}
318
319impl TDDeviceToken for DeviceTokenBlackBerryPush {}
320
321impl DeviceTokenBlackBerryPush {
322 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
323 Ok(serde_json::from_str(json.as_ref())?)
324 }
325 pub fn builder() -> DeviceTokenBlackBerryPushBuilder {
326 let mut inner = DeviceTokenBlackBerryPush::default();
327 inner.extra = Some(Uuid::new_v4().to_string());
328
329 DeviceTokenBlackBerryPushBuilder { inner }
330 }
331
332 pub fn token(&self) -> &String {
333 &self.token
334 }
335}
336
337#[doc(hidden)]
338pub struct DeviceTokenBlackBerryPushBuilder {
339 inner: DeviceTokenBlackBerryPush,
340}
341
342#[deprecated]
343pub type RTDDeviceTokenBlackBerryPushBuilder = DeviceTokenBlackBerryPushBuilder;
344
345impl DeviceTokenBlackBerryPushBuilder {
346 pub fn build(&self) -> DeviceTokenBlackBerryPush {
347 self.inner.clone()
348 }
349
350 pub fn token<T: AsRef<str>>(&mut self, token: T) -> &mut Self {
351 self.inner.token = token.as_ref().to_string();
352 self
353 }
354}
355
356impl AsRef<DeviceTokenBlackBerryPush> for DeviceTokenBlackBerryPush {
357 fn as_ref(&self) -> &DeviceTokenBlackBerryPush {
358 self
359 }
360}
361
362impl AsRef<DeviceTokenBlackBerryPush> for DeviceTokenBlackBerryPushBuilder {
363 fn as_ref(&self) -> &DeviceTokenBlackBerryPush {
364 &self.inner
365 }
366}
367
368#[derive(Debug, Clone, Default, Serialize, Deserialize)]
370pub struct DeviceTokenFirebaseCloudMessaging {
371 #[doc(hidden)]
372 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
373 extra: Option<String>,
374 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
375 client_id: Option<i32>,
376 #[serde(default)]
379 token: String,
380 #[serde(default)]
383 encrypt: bool,
384}
385
386impl RObject for DeviceTokenFirebaseCloudMessaging {
387 #[doc(hidden)]
388 fn extra(&self) -> Option<&str> {
389 self.extra.as_deref()
390 }
391 #[doc(hidden)]
392 fn client_id(&self) -> Option<i32> {
393 self.client_id
394 }
395}
396
397impl TDDeviceToken for DeviceTokenFirebaseCloudMessaging {}
398
399impl DeviceTokenFirebaseCloudMessaging {
400 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
401 Ok(serde_json::from_str(json.as_ref())?)
402 }
403 pub fn builder() -> DeviceTokenFirebaseCloudMessagingBuilder {
404 let mut inner = DeviceTokenFirebaseCloudMessaging::default();
405 inner.extra = Some(Uuid::new_v4().to_string());
406
407 DeviceTokenFirebaseCloudMessagingBuilder { inner }
408 }
409
410 pub fn token(&self) -> &String {
411 &self.token
412 }
413
414 pub fn encrypt(&self) -> bool {
415 self.encrypt
416 }
417}
418
419#[doc(hidden)]
420pub struct DeviceTokenFirebaseCloudMessagingBuilder {
421 inner: DeviceTokenFirebaseCloudMessaging,
422}
423
424#[deprecated]
425pub type RTDDeviceTokenFirebaseCloudMessagingBuilder = DeviceTokenFirebaseCloudMessagingBuilder;
426
427impl DeviceTokenFirebaseCloudMessagingBuilder {
428 pub fn build(&self) -> DeviceTokenFirebaseCloudMessaging {
429 self.inner.clone()
430 }
431
432 pub fn token<T: AsRef<str>>(&mut self, token: T) -> &mut Self {
433 self.inner.token = token.as_ref().to_string();
434 self
435 }
436
437 pub fn encrypt(&mut self, encrypt: bool) -> &mut Self {
438 self.inner.encrypt = encrypt;
439 self
440 }
441}
442
443impl AsRef<DeviceTokenFirebaseCloudMessaging> for DeviceTokenFirebaseCloudMessaging {
444 fn as_ref(&self) -> &DeviceTokenFirebaseCloudMessaging {
445 self
446 }
447}
448
449impl AsRef<DeviceTokenFirebaseCloudMessaging> for DeviceTokenFirebaseCloudMessagingBuilder {
450 fn as_ref(&self) -> &DeviceTokenFirebaseCloudMessaging {
451 &self.inner
452 }
453}
454
455#[derive(Debug, Clone, Default, Serialize, Deserialize)]
457pub struct DeviceTokenMicrosoftPush {
458 #[doc(hidden)]
459 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
460 extra: Option<String>,
461 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
462 client_id: Option<i32>,
463 #[serde(default)]
466 channel_uri: String,
467}
468
469impl RObject for DeviceTokenMicrosoftPush {
470 #[doc(hidden)]
471 fn extra(&self) -> Option<&str> {
472 self.extra.as_deref()
473 }
474 #[doc(hidden)]
475 fn client_id(&self) -> Option<i32> {
476 self.client_id
477 }
478}
479
480impl TDDeviceToken for DeviceTokenMicrosoftPush {}
481
482impl DeviceTokenMicrosoftPush {
483 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
484 Ok(serde_json::from_str(json.as_ref())?)
485 }
486 pub fn builder() -> DeviceTokenMicrosoftPushBuilder {
487 let mut inner = DeviceTokenMicrosoftPush::default();
488 inner.extra = Some(Uuid::new_v4().to_string());
489
490 DeviceTokenMicrosoftPushBuilder { inner }
491 }
492
493 pub fn channel_uri(&self) -> &String {
494 &self.channel_uri
495 }
496}
497
498#[doc(hidden)]
499pub struct DeviceTokenMicrosoftPushBuilder {
500 inner: DeviceTokenMicrosoftPush,
501}
502
503#[deprecated]
504pub type RTDDeviceTokenMicrosoftPushBuilder = DeviceTokenMicrosoftPushBuilder;
505
506impl DeviceTokenMicrosoftPushBuilder {
507 pub fn build(&self) -> DeviceTokenMicrosoftPush {
508 self.inner.clone()
509 }
510
511 pub fn channel_uri<T: AsRef<str>>(&mut self, channel_uri: T) -> &mut Self {
512 self.inner.channel_uri = channel_uri.as_ref().to_string();
513 self
514 }
515}
516
517impl AsRef<DeviceTokenMicrosoftPush> for DeviceTokenMicrosoftPush {
518 fn as_ref(&self) -> &DeviceTokenMicrosoftPush {
519 self
520 }
521}
522
523impl AsRef<DeviceTokenMicrosoftPush> for DeviceTokenMicrosoftPushBuilder {
524 fn as_ref(&self) -> &DeviceTokenMicrosoftPush {
525 &self.inner
526 }
527}
528
529#[derive(Debug, Clone, Default, Serialize, Deserialize)]
531pub struct DeviceTokenMicrosoftPushVoIP {
532 #[doc(hidden)]
533 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
534 extra: Option<String>,
535 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
536 client_id: Option<i32>,
537 #[serde(default)]
540 channel_uri: String,
541}
542
543impl RObject for DeviceTokenMicrosoftPushVoIP {
544 #[doc(hidden)]
545 fn extra(&self) -> Option<&str> {
546 self.extra.as_deref()
547 }
548 #[doc(hidden)]
549 fn client_id(&self) -> Option<i32> {
550 self.client_id
551 }
552}
553
554impl TDDeviceToken for DeviceTokenMicrosoftPushVoIP {}
555
556impl DeviceTokenMicrosoftPushVoIP {
557 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
558 Ok(serde_json::from_str(json.as_ref())?)
559 }
560 pub fn builder() -> DeviceTokenMicrosoftPushVoIPBuilder {
561 let mut inner = DeviceTokenMicrosoftPushVoIP::default();
562 inner.extra = Some(Uuid::new_v4().to_string());
563
564 DeviceTokenMicrosoftPushVoIPBuilder { inner }
565 }
566
567 pub fn channel_uri(&self) -> &String {
568 &self.channel_uri
569 }
570}
571
572#[doc(hidden)]
573pub struct DeviceTokenMicrosoftPushVoIPBuilder {
574 inner: DeviceTokenMicrosoftPushVoIP,
575}
576
577#[deprecated]
578pub type RTDDeviceTokenMicrosoftPushVoIPBuilder = DeviceTokenMicrosoftPushVoIPBuilder;
579
580impl DeviceTokenMicrosoftPushVoIPBuilder {
581 pub fn build(&self) -> DeviceTokenMicrosoftPushVoIP {
582 self.inner.clone()
583 }
584
585 pub fn channel_uri<T: AsRef<str>>(&mut self, channel_uri: T) -> &mut Self {
586 self.inner.channel_uri = channel_uri.as_ref().to_string();
587 self
588 }
589}
590
591impl AsRef<DeviceTokenMicrosoftPushVoIP> for DeviceTokenMicrosoftPushVoIP {
592 fn as_ref(&self) -> &DeviceTokenMicrosoftPushVoIP {
593 self
594 }
595}
596
597impl AsRef<DeviceTokenMicrosoftPushVoIP> for DeviceTokenMicrosoftPushVoIPBuilder {
598 fn as_ref(&self) -> &DeviceTokenMicrosoftPushVoIP {
599 &self.inner
600 }
601}
602
603#[derive(Debug, Clone, Default, Serialize, Deserialize)]
605pub struct DeviceTokenSimplePush {
606 #[doc(hidden)]
607 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
608 extra: Option<String>,
609 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
610 client_id: Option<i32>,
611 #[serde(default)]
614 endpoint: String,
615}
616
617impl RObject for DeviceTokenSimplePush {
618 #[doc(hidden)]
619 fn extra(&self) -> Option<&str> {
620 self.extra.as_deref()
621 }
622 #[doc(hidden)]
623 fn client_id(&self) -> Option<i32> {
624 self.client_id
625 }
626}
627
628impl TDDeviceToken for DeviceTokenSimplePush {}
629
630impl DeviceTokenSimplePush {
631 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
632 Ok(serde_json::from_str(json.as_ref())?)
633 }
634 pub fn builder() -> DeviceTokenSimplePushBuilder {
635 let mut inner = DeviceTokenSimplePush::default();
636 inner.extra = Some(Uuid::new_v4().to_string());
637
638 DeviceTokenSimplePushBuilder { inner }
639 }
640
641 pub fn endpoint(&self) -> &String {
642 &self.endpoint
643 }
644}
645
646#[doc(hidden)]
647pub struct DeviceTokenSimplePushBuilder {
648 inner: DeviceTokenSimplePush,
649}
650
651#[deprecated]
652pub type RTDDeviceTokenSimplePushBuilder = DeviceTokenSimplePushBuilder;
653
654impl DeviceTokenSimplePushBuilder {
655 pub fn build(&self) -> DeviceTokenSimplePush {
656 self.inner.clone()
657 }
658
659 pub fn endpoint<T: AsRef<str>>(&mut self, endpoint: T) -> &mut Self {
660 self.inner.endpoint = endpoint.as_ref().to_string();
661 self
662 }
663}
664
665impl AsRef<DeviceTokenSimplePush> for DeviceTokenSimplePush {
666 fn as_ref(&self) -> &DeviceTokenSimplePush {
667 self
668 }
669}
670
671impl AsRef<DeviceTokenSimplePush> for DeviceTokenSimplePushBuilder {
672 fn as_ref(&self) -> &DeviceTokenSimplePush {
673 &self.inner
674 }
675}
676
677#[derive(Debug, Clone, Default, Serialize, Deserialize)]
679pub struct DeviceTokenTizenPush {
680 #[doc(hidden)]
681 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
682 extra: Option<String>,
683 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
684 client_id: Option<i32>,
685 #[serde(default)]
688 reg_id: String,
689}
690
691impl RObject for DeviceTokenTizenPush {
692 #[doc(hidden)]
693 fn extra(&self) -> Option<&str> {
694 self.extra.as_deref()
695 }
696 #[doc(hidden)]
697 fn client_id(&self) -> Option<i32> {
698 self.client_id
699 }
700}
701
702impl TDDeviceToken for DeviceTokenTizenPush {}
703
704impl DeviceTokenTizenPush {
705 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
706 Ok(serde_json::from_str(json.as_ref())?)
707 }
708 pub fn builder() -> DeviceTokenTizenPushBuilder {
709 let mut inner = DeviceTokenTizenPush::default();
710 inner.extra = Some(Uuid::new_v4().to_string());
711
712 DeviceTokenTizenPushBuilder { inner }
713 }
714
715 pub fn reg_id(&self) -> &String {
716 &self.reg_id
717 }
718}
719
720#[doc(hidden)]
721pub struct DeviceTokenTizenPushBuilder {
722 inner: DeviceTokenTizenPush,
723}
724
725#[deprecated]
726pub type RTDDeviceTokenTizenPushBuilder = DeviceTokenTizenPushBuilder;
727
728impl DeviceTokenTizenPushBuilder {
729 pub fn build(&self) -> DeviceTokenTizenPush {
730 self.inner.clone()
731 }
732
733 pub fn reg_id<T: AsRef<str>>(&mut self, reg_id: T) -> &mut Self {
734 self.inner.reg_id = reg_id.as_ref().to_string();
735 self
736 }
737}
738
739impl AsRef<DeviceTokenTizenPush> for DeviceTokenTizenPush {
740 fn as_ref(&self) -> &DeviceTokenTizenPush {
741 self
742 }
743}
744
745impl AsRef<DeviceTokenTizenPush> for DeviceTokenTizenPushBuilder {
746 fn as_ref(&self) -> &DeviceTokenTizenPush {
747 &self.inner
748 }
749}
750
751#[derive(Debug, Clone, Default, Serialize, Deserialize)]
753pub struct DeviceTokenUbuntuPush {
754 #[doc(hidden)]
755 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
756 extra: Option<String>,
757 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
758 client_id: Option<i32>,
759 #[serde(default)]
762 token: String,
763}
764
765impl RObject for DeviceTokenUbuntuPush {
766 #[doc(hidden)]
767 fn extra(&self) -> Option<&str> {
768 self.extra.as_deref()
769 }
770 #[doc(hidden)]
771 fn client_id(&self) -> Option<i32> {
772 self.client_id
773 }
774}
775
776impl TDDeviceToken for DeviceTokenUbuntuPush {}
777
778impl DeviceTokenUbuntuPush {
779 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
780 Ok(serde_json::from_str(json.as_ref())?)
781 }
782 pub fn builder() -> DeviceTokenUbuntuPushBuilder {
783 let mut inner = DeviceTokenUbuntuPush::default();
784 inner.extra = Some(Uuid::new_v4().to_string());
785
786 DeviceTokenUbuntuPushBuilder { inner }
787 }
788
789 pub fn token(&self) -> &String {
790 &self.token
791 }
792}
793
794#[doc(hidden)]
795pub struct DeviceTokenUbuntuPushBuilder {
796 inner: DeviceTokenUbuntuPush,
797}
798
799#[deprecated]
800pub type RTDDeviceTokenUbuntuPushBuilder = DeviceTokenUbuntuPushBuilder;
801
802impl DeviceTokenUbuntuPushBuilder {
803 pub fn build(&self) -> DeviceTokenUbuntuPush {
804 self.inner.clone()
805 }
806
807 pub fn token<T: AsRef<str>>(&mut self, token: T) -> &mut Self {
808 self.inner.token = token.as_ref().to_string();
809 self
810 }
811}
812
813impl AsRef<DeviceTokenUbuntuPush> for DeviceTokenUbuntuPush {
814 fn as_ref(&self) -> &DeviceTokenUbuntuPush {
815 self
816 }
817}
818
819impl AsRef<DeviceTokenUbuntuPush> for DeviceTokenUbuntuPushBuilder {
820 fn as_ref(&self) -> &DeviceTokenUbuntuPush {
821 &self.inner
822 }
823}
824
825#[derive(Debug, Clone, Default, Serialize, Deserialize)]
827pub struct DeviceTokenWebPush {
828 #[doc(hidden)]
829 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
830 extra: Option<String>,
831 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
832 client_id: Option<i32>,
833 #[serde(default)]
836 endpoint: String,
837 #[serde(default)]
840 p256dh_base64url: String,
841 #[serde(default)]
844 auth_base64url: String,
845}
846
847impl RObject for DeviceTokenWebPush {
848 #[doc(hidden)]
849 fn extra(&self) -> Option<&str> {
850 self.extra.as_deref()
851 }
852 #[doc(hidden)]
853 fn client_id(&self) -> Option<i32> {
854 self.client_id
855 }
856}
857
858impl TDDeviceToken for DeviceTokenWebPush {}
859
860impl DeviceTokenWebPush {
861 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
862 Ok(serde_json::from_str(json.as_ref())?)
863 }
864 pub fn builder() -> DeviceTokenWebPushBuilder {
865 let mut inner = DeviceTokenWebPush::default();
866 inner.extra = Some(Uuid::new_v4().to_string());
867
868 DeviceTokenWebPushBuilder { inner }
869 }
870
871 pub fn endpoint(&self) -> &String {
872 &self.endpoint
873 }
874
875 pub fn p256dh_base64url(&self) -> &String {
876 &self.p256dh_base64url
877 }
878
879 pub fn auth_base64url(&self) -> &String {
880 &self.auth_base64url
881 }
882}
883
884#[doc(hidden)]
885pub struct DeviceTokenWebPushBuilder {
886 inner: DeviceTokenWebPush,
887}
888
889#[deprecated]
890pub type RTDDeviceTokenWebPushBuilder = DeviceTokenWebPushBuilder;
891
892impl DeviceTokenWebPushBuilder {
893 pub fn build(&self) -> DeviceTokenWebPush {
894 self.inner.clone()
895 }
896
897 pub fn endpoint<T: AsRef<str>>(&mut self, endpoint: T) -> &mut Self {
898 self.inner.endpoint = endpoint.as_ref().to_string();
899 self
900 }
901
902 pub fn p256dh_base64url<T: AsRef<str>>(&mut self, p256dh_base64url: T) -> &mut Self {
903 self.inner.p256dh_base64url = p256dh_base64url.as_ref().to_string();
904 self
905 }
906
907 pub fn auth_base64url<T: AsRef<str>>(&mut self, auth_base64url: T) -> &mut Self {
908 self.inner.auth_base64url = auth_base64url.as_ref().to_string();
909 self
910 }
911}
912
913impl AsRef<DeviceTokenWebPush> for DeviceTokenWebPush {
914 fn as_ref(&self) -> &DeviceTokenWebPush {
915 self
916 }
917}
918
919impl AsRef<DeviceTokenWebPush> for DeviceTokenWebPushBuilder {
920 fn as_ref(&self) -> &DeviceTokenWebPush {
921 &self.inner
922 }
923}
924
925#[derive(Debug, Clone, Default, Serialize, Deserialize)]
927pub struct DeviceTokenWindowsPush {
928 #[doc(hidden)]
929 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
930 extra: Option<String>,
931 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
932 client_id: Option<i32>,
933 #[serde(default)]
936 access_token: String,
937}
938
939impl RObject for DeviceTokenWindowsPush {
940 #[doc(hidden)]
941 fn extra(&self) -> Option<&str> {
942 self.extra.as_deref()
943 }
944 #[doc(hidden)]
945 fn client_id(&self) -> Option<i32> {
946 self.client_id
947 }
948}
949
950impl TDDeviceToken for DeviceTokenWindowsPush {}
951
952impl DeviceTokenWindowsPush {
953 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
954 Ok(serde_json::from_str(json.as_ref())?)
955 }
956 pub fn builder() -> DeviceTokenWindowsPushBuilder {
957 let mut inner = DeviceTokenWindowsPush::default();
958 inner.extra = Some(Uuid::new_v4().to_string());
959
960 DeviceTokenWindowsPushBuilder { inner }
961 }
962
963 pub fn access_token(&self) -> &String {
964 &self.access_token
965 }
966}
967
968#[doc(hidden)]
969pub struct DeviceTokenWindowsPushBuilder {
970 inner: DeviceTokenWindowsPush,
971}
972
973#[deprecated]
974pub type RTDDeviceTokenWindowsPushBuilder = DeviceTokenWindowsPushBuilder;
975
976impl DeviceTokenWindowsPushBuilder {
977 pub fn build(&self) -> DeviceTokenWindowsPush {
978 self.inner.clone()
979 }
980
981 pub fn access_token<T: AsRef<str>>(&mut self, access_token: T) -> &mut Self {
982 self.inner.access_token = access_token.as_ref().to_string();
983 self
984 }
985}
986
987impl AsRef<DeviceTokenWindowsPush> for DeviceTokenWindowsPush {
988 fn as_ref(&self) -> &DeviceTokenWindowsPush {
989 self
990 }
991}
992
993impl AsRef<DeviceTokenWindowsPush> for DeviceTokenWindowsPushBuilder {
994 fn as_ref(&self) -> &DeviceTokenWindowsPush {
995 &self.inner
996 }
997}