File: src\internal\api\caseManagement\CaseManagementApi.ts
/// <reference path="../../utils/http.ts"/>
/// <reference path="../../ui/caseManagement/constants.ts" />
/// <reference path="../../ui/caseManagement/caseconfig.ts" />
/**
* @module API
* @submodule API Case Management
* @namespace api
*/
namespace internal.api.caseManagement {
export interface GetCaseConfig extends internal.ui.caseManagement.CaseConfig {
caseNumber: string;
}
/**
* Case Management API
* @class caseManagement
* @static
*/
export class CaseManagementApi {
/**
* Gets a case
* @method getCase
* @static
* @param {object} config A config object to get a case.
* @param {string} config.locale. Locale to render the workflow in, such as en-us, fr-fr
* @param {string} config.preview. Use compass unpublished data in workflow
* @param {string} config.environment. A value from {{#crossLink "ui.caseManagement.Environment"}}{{/crossLink}} (default is ui.caseManagement.Environment.PRODUCTION)
* @return {Promise | object}.
*/
static getCase(config: GetCaseConfig): JQueryPromise<any> {
CaseManagementApi.validateConfig(config);
let apiUrl = CaseManagementApi.calculateApiUrl(config);
let requestOptions: HttpRequestOptions = {
operationName: "api.caseManagement.getCase",
url: apiUrl,
dependencyName: "SelfAssistWeb",
dependencyOperationName: "Get case details",
additionalHeaders: {
"x-requst-secured-context-token": config.authInfo.token
}
};
return utils.httpRequest.get(requestOptions);
}
static calculateApiUrl(config: GetCaseConfig) {
let baseUrl = internal.ui.caseManagement.getCaseBaseUrl(config);
return `https://${baseUrl}/api/cases/${config.caseNumber}`;
}
static validateConfig(config: GetCaseConfig) {
if (!utils.isString(config.caseNumber)) {
throw "getCase requires a case number";
}
if (!(config.authInfo && config.authInfo.token && config.authInfo.type)) {
throw "getCase requires authInfo with valid token and type";
}
if (config.authInfo.type !== ui.AuthType.DELEGATED) {
throw "getCase only supports delegated authentication type";
}
}
}
}