lexoffice_cli/resources/
event_subscription.rs1use crate::actions::*;
2use crate::ReturnType;
3use lexoffice::model::event_subscriptions::EventType;
4use lexoffice::model::EventSubscription;
5use lexoffice::Client;
6use lexoffice::Result;
7use structopt::StructOpt;
8
9#[derive(Debug, StructOpt)]
11pub enum EventSubscriptionOpt {
12 List(PaginatedOpt),
14 New(StorableOpt),
16 Updatable(UpdatableOpt),
18 Get(ByIdOpt),
20 Delete(DeletableOpt),
22}
23
24fn default() -> EventSubscription {
25 EventSubscription::builder()
26 .event_type(EventType::ContactCreated)
27 .callback_url("http://example.com/callback".to_string())
28 .build()
29}
30
31impl EventSubscriptionOpt {
32 pub async fn exec(
33 &self,
34 client: Client,
35 ) -> Result<ReturnType<EventSubscription>> {
36 let request = client.request::<EventSubscription>();
37 let result = match self {
38 Self::List(x) => ReturnType::Paged(x.exec(request).await?),
39 Self::New(x) => {
40 ReturnType::ResultInfo(x.exec(request, default()).await?)
41 }
42 Self::Updatable(x) => {
43 ReturnType::ResultInfo(x.exec(request).await?)
44 }
45 Self::Get(x) => ReturnType::Obj(x.exec(request).await?),
46 Self::Delete(x) => {
47 x.exec(request).await?;
48 ReturnType::Empty
49 }
50 };
51 Ok(result)
52 }
53}