/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { ShippoCore } from "../core.js"; import * as components from "../models/components/index.js"; import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; import { ERR, Result } from "../types/fp.js"; export async function validateWebhook(_client: ShippoCore, { request: rawRequest, }: { request: { body: BodyInit; method: string; url: string; headers: Record | Headers; } | Request; }): Promise< Result< | components.WebhookPayloadBatch | components.WebhookPayloadTrack | components.WebhookPayloadTransaction, SDKValidationError > > { const request = normalizeRequest(rawRequest); const knownSchemas = [ components.webhookPayloadBatchFromJSON, components.webhookPayloadTrackFromJSON, components.webhookPayloadTransactionFromJSON, ]; const jsonString = await request.text(); for (const schema of knownSchemas) { const ret = schema(jsonString); if (ret.ok) { return ret; } } return ERR( new SDKValidationError( "No matching schema found for the given webhook payload", jsonString, jsonString, ), ); } function normalizeRequest( request: { body: BodyInit; method: string; url: string; headers: Record | Headers; } | Request, ): Request { if (request instanceof Request) { return request; } return new Request(request.url, request); }