-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathsaleor-webhook.ts
61 lines (55 loc) · 1.43 KB
/
saleor-webhook.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { AuthData } from "../../APL";
export const WebhookErrorCodeMap: Record<SaleorWebhookError, number> = {
OTHER: 500,
MISSING_HOST_HEADER: 400,
MISSING_DOMAIN_HEADER: 400,
MISSING_API_URL_HEADER: 400,
MISSING_EVENT_HEADER: 400,
MISSING_PAYLOAD_HEADER: 400,
MISSING_SIGNATURE_HEADER: 400,
MISSING_REQUEST_BODY: 400,
WRONG_EVENT: 400,
NOT_REGISTERED: 401,
SIGNATURE_VERIFICATION_FAILED: 401,
WRONG_METHOD: 405,
CANT_BE_PARSED: 400,
CONFIGURATION_ERROR: 500,
};
export type SaleorWebhookError =
| "OTHER"
| "MISSING_HOST_HEADER"
| "MISSING_DOMAIN_HEADER"
| "MISSING_API_URL_HEADER"
| "MISSING_EVENT_HEADER"
| "MISSING_PAYLOAD_HEADER"
| "MISSING_SIGNATURE_HEADER"
| "MISSING_REQUEST_BODY"
| "WRONG_EVENT"
| "NOT_REGISTERED"
| "SIGNATURE_VERIFICATION_FAILED"
| "WRONG_METHOD"
| "CANT_BE_PARSED"
| "CONFIGURATION_ERROR";
export class WebhookError extends Error {
errorType: SaleorWebhookError = "OTHER";
constructor(message: string, errorType: SaleorWebhookError) {
super(message);
if (errorType) {
this.errorType = errorType;
}
Object.setPrototypeOf(this, WebhookError.prototype);
}
}
export type WebhookContext<TPayload> = {
baseUrl: string;
event: string;
payload: TPayload;
authData: AuthData;
// TODO: Make this required
/** Added in Saleor 3.15 */
schemaVersion: number | null;
};
export type FormatWebhookErrorResult = {
code: number;
body: string;
};