UNPKG

@aajsa/moyasar-client

Version:

A lightweight and type-safe TypeScript client for interacting with Moyasar Payment Gateway APIs.

46 lines (44 loc) 1.32 kB
const require_env = require('./env.cjs'); //#region src/utils.ts const routeHandler = (route, apiKey, fetchOptions, disableValidation) => { return async (input) => { const { body, query, params } = input ?? {}; const { method, path } = route; try { if (!disableValidation) { route.input?.parse?.(body); route.params?.parse?.(params); route.query?.parse?.(query); } } catch (e) { throw new Error(`Validation failed: ${e.message}`); } let url = require_env.apiUrl + path; if (params) url = url.replace(/:([a-zA-Z0-9_]+)/g, (_, id) => { return encodeURIComponent(params[id]); }); if (query) { const searchParams = new URLSearchParams(); for (const [k, v] of Object.entries(query)) if (v != null) searchParams.append(k, String(v)); if (searchParams.toString()) url += `?${searchParams.toString()}`; } const headers = { Accept: "application/json", "Content-Type": "application/json", Authorization: `Basic ${btoa(`${apiKey}:`)}`, ...fetchOptions?.headers }; const config = { ...fetchOptions, method, headers, body: body ? JSON.stringify(body) : void 0 }; const response = await fetch(url, config); const data = await response.json(); if (response.ok) return data; return data; }; }; //#endregion exports.routeHandler = routeHandler;