Skip to content

Commit 034925b

Browse files
committed
Add WebhookHandler mustache template
1 parent c56d57a commit 034925b

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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

Comments
 (0)