@elasticapi/wpengine-typescript-sdk
Version:
Unofficial TypeScript SDK for the WP Engine API
93 lines • 3.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidatedApiWrapper = void 0;
const validators_1 = require("./validators");
/**
* Wraps API clients with validation
*/
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_1.validators.accountId(accountId);
validators_1.validate.userInput(requestBody.user);
return originalCreate(accountId, requestBody);
};
// Wrap deleteAccountUser
const originalDelete = wrapped.deleteAccountUser.bind(wrapped);
wrapped.deleteAccountUser = async (accountId, userId) => {
validators_1.validators.accountId(accountId);
validators_1.validators.userId(userId);
return originalDelete(accountId, userId);
};
// Wrap listAccountUsers
const originalList = wrapped.listAccountUsers.bind(wrapped);
wrapped.listAccountUsers = async (accountId) => {
validators_1.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_1.validators.installId(installId);
validators_1.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_1.validators.installId(installId);
validators_1.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_1.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_1.validators.uuid(siteId);
return originalGet(siteId);
};
return wrapped;
}
}
exports.ValidatedApiWrapper = ValidatedApiWrapper;
//# sourceMappingURL=api-wrapper.js.map