@elasticapi/wpengine-typescript-sdk
Version:
Unofficial TypeScript SDK for the WP Engine API
89 lines • 3.02 kB
JavaScript
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