1
+ { {> licenseInfo} }
2
+ import { {{serviceName} } } from "..";
3
+
4
+ /**
5
+ * Union type for all supported webhook requests.
6
+ * Allows generic handling of configuration-related webhook events.
7
+ */
8
+ export type GenericWebhook = { {#models} }{ {#model.vendorExtensions.x-webhook-root} }
9
+ | { {serviceName} }.{ {model.name} }{ {/model.vendorExtensions.x-webhook-root} }{ {#-last} };{ {/-last} }{ {/models} }
10
+
11
+ /**
12
+ * Handler for processing { {originalServiceName} }.
13
+ *
14
+ * This class provides functionality to deserialize the payload of { {originalServiceName} } events.
15
+ */
16
+ export class { {originalServiceName} }Handler {
17
+
18
+ private readonly payload: Record< string, any> ;
19
+
20
+ public constructor(jsonPayload: string) {
21
+ this.payload = JSON.parse(jsonPayload);
22
+ }
23
+
24
+ /**
25
+ * This method checks the type of the webhook payload and returns the appropriate deserialized object.
26
+ *
27
+ * @returns A deserialized object of type GenericWebhook.
28
+ * @throws Error if the type is not recognized.
29
+ */
30
+ public getGenericWebhook(): GenericWebhook {
31
+
32
+ const type = this.payload[" type" ];
33
+ {{#models} }{ {#model.vendorExtensions.x-webhook-root} }
34
+ if(Object.values({ {serviceName} }.{ {model.name} }.TypeEnum).includes(type)) {
35
+ return this.get{{model.name} }();
36
+ }
37
+ { {/model.vendorExtensions.x-webhook-root} }{ {/models} }
38
+ throw new Error("Could not parse the json payload: " + this.payload);
39
+
40
+ }
41
+ { {#models} }{ {#model.vendorExtensions.x-webhook-root} }
42
+ /**
43
+ * Deserialize the webhook payload into a { {model.name} }
44
+ *
45
+ * @returns Deserialized { {model.name} } object.
46
+ */
47
+ public get{ {model.name} }(): { {serviceName} }.{ {model.name} } {
48
+ return {{serviceName} }.ObjectSerializer.deserialize(this.payload, "{ {model.name} }");
49
+ }
50
+ { {/model.vendorExtensions.x-webhook-root} }{ {/models} }
51
+ }
0 commit comments