UNPKG

@elasticapi/wpengine-typescript-sdk

Version:
89 lines 3.02 kB
import { validate, validators } from './validators'; /** * Wraps API clients with validation */ export class ValidatedApiWrapper { /** * Wrap AccountUserApi with validation */ static wrapAccountUserApi(api) { const wrapped = api; // Wrap createAccountUser const originalCreate = wrapped.createAccountUser.bind(wrapped); wrapped.createAccountUser = async (accountId, requestBody) => { validators.accountId(accountId); validate.userInput(requestBody.user); return originalCreate(accountId, requestBody); }; // Wrap deleteAccountUser const originalDelete = wrapped.deleteAccountUser.bind(wrapped); wrapped.deleteAccountUser = async (accountId, userId) => { validators.accountId(accountId); validators.userId(userId); return originalDelete(accountId, userId); }; // Wrap listAccountUsers const originalList = wrapped.listAccountUsers.bind(wrapped); wrapped.listAccountUsers = async (accountId) => { validators.accountId(accountId); return originalList(accountId); }; return wrapped; } /** * Wrap BackupApi with validation */ static wrapBackupApi(api) { const wrapped = api; // Wrap createBackup const originalCreate = wrapped.createBackup.bind(wrapped); wrapped.createBackup = async (installId, requestBody) => { validators.installId(installId); validate.backupInput(requestBody.backup); return originalCreate(installId, requestBody); }; // Note: Removed listBackups as it's not in the API spec return wrapped; } /** * Wrap DomainApi with validation */ static wrapDomainApi(api) { const wrapped = api; // Wrap createDomain const originalCreate = wrapped.createDomain.bind(wrapped); wrapped.createDomain = async (installId, requestBody) => { validators.installId(installId); validate.domainInput(requestBody.domain); return originalCreate(installId, requestBody); }; return wrapped; } /** * Wrap InstallApi with validation */ static wrapInstallApi(api) { const wrapped = api; // Wrap getInstall const originalGet = wrapped.getInstall.bind(wrapped); wrapped.getInstall = async (installId) => { validators.installId(installId); return originalGet(installId); }; return wrapped; } /** * Wrap SiteApi with validation */ static wrapSiteApi(api) { const wrapped = api; // Wrap getSite const originalGet = wrapped.getSite.bind(wrapped); wrapped.getSite = async (siteId) => { validators.uuid(siteId); return originalGet(siteId); }; return wrapped; } } //# sourceMappingURL=api-wrapper.js.map