myc_core/domain/dtos/webhook/trigger.rs
1use serde::{Deserialize, Serialize};
2use std::fmt::{self, Display, Formatter};
3use std::str::FromStr;
4use utoipa::ToSchema;
5
6#[derive(
7 Clone, Debug, Serialize, Deserialize, ToSchema, PartialEq, Eq, Hash,
8)]
9pub enum WebHookTrigger {
10 // ? -----------------------------------------------------------------------
11 // ? Subscription account related actions
12 // ? -----------------------------------------------------------------------
13 #[serde(rename = "subscriptionAccount.created")]
14 SubscriptionAccountCreated,
15 //#[serde(rename = "subscriptionAccount.updated")]
16 //SubscriptionAccountUpdated,
17 //#[serde(rename = "subscriptionAccount.deleted")]
18 //SubscriptionAccountDeleted,
19
20 // ? -----------------------------------------------------------------------
21 // ? Default user account related actions
22 // ? -----------------------------------------------------------------------
23 #[serde(rename = "userAccount.created")]
24 UserAccountCreated,
25 //#[serde(rename = "userAccount.updated")]
26 //UserAccountUpdated,
27 //#[serde(rename = "userAccount.deleted")]
28 //UserAccountDeleted,
29}
30
31impl Display for WebHookTrigger {
32 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
33 match self {
34 Self::SubscriptionAccountCreated => {
35 write!(f, "subscriptionAccount.created")
36 }
37 //Self::SubscriptionAccountUpdated => {
38 // write!(f, "subscriptionAccount.updated")
39 //}
40 //Self::SubscriptionAccountDeleted => {
41 // write!(f, "subscriptionAccount.deleted")
42 //}
43 Self::UserAccountCreated => write!(f, "userAccount.created"),
44 //Self::UserAccountUpdated => write!(f, "userAccount.updated"),
45 //Self::UserAccountDeleted => write!(f, "userAccount.deleted"),
46 }
47 }
48}
49
50impl FromStr for WebHookTrigger {
51 type Err = String;
52
53 fn from_str(s: &str) -> Result<Self, Self::Err> {
54 match s {
55 "subscriptionAccount.created" => {
56 Ok(Self::SubscriptionAccountCreated)
57 }
58 //"subscriptionAccount.updated" => {
59 // Ok(Self::SubscriptionAccountUpdated)
60 //}
61 //"subscriptionAccount.deleted" => {
62 // Ok(Self::SubscriptionAccountDeleted)
63 //}
64 "userAccount.created" => Ok(Self::UserAccountCreated),
65 //"userAccount.updated" => Ok(Self::UserAccountUpdated),
66 //"userAccount.deleted" => Ok(Self::UserAccountDeleted),
67 _ => Err(format!("Unknown webhook trigger: {}", s)),
68 }
69 }
70}