d7fb7b7a7b
Build & Deploy / Build & Push Docker Image (push) Failing after 47s
Build & Deploy / Deploy to VPS (push) Has been skipped
Test / API Unit Tests (push) Failing after 5m4s
Test / Marketplace Unit Tests (push) Failing after 4m55s
Test / Admin Unit Tests (push) Successful in 9m37s
Test / Dashboard Unit Tests (push) Successful in 9m37s
Test / API Integration Tests (push) Successful in 9m54s
19 lines
533 B
TypeScript
19 lines
533 B
TypeScript
import type { Request } from 'express'
|
|
import { ValidationError } from './errors'
|
|
|
|
export function getRawBodyString(req: Request) {
|
|
if (!Buffer.isBuffer(req.body)) {
|
|
throw new ValidationError('Webhook route must be mounted with express.raw before JSON parsing')
|
|
}
|
|
return req.body.toString('utf8')
|
|
}
|
|
|
|
export function parseRawJsonBody<T = unknown>(req: Request): T {
|
|
const rawBody = getRawBodyString(req)
|
|
try {
|
|
return JSON.parse(rawBody) as T
|
|
} catch {
|
|
throw new ValidationError('Malformed webhook JSON')
|
|
}
|
|
}
|