@zowe/cli
Version:
Zowe CLI is a command line interface (CLI) that provides a simple and streamlined way to interact with IBM z/OS.
117 lines • 6.17 kB
JavaScript
;
/*
* This program and the accompanying materials are made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v20.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Copyright Contributors to the Zowe Project.
*
*/
Object.defineProperty(exports, "__esModule", { value: true });
const imperative_1 = require("@zowe/imperative");
const util_1 = require("util");
const ConsoleConstants_1 = require("./ConsoleConstants");
/**
* Class contains helper methods for console response commands response processing
* @export
* @class ConsoleResponseService
*/
class ConsoleResponseService {
/**
* Populate the console response with the details returned from the z/OSMF console API.
* Method takes two parameters: response from z/OSMF command and response to be populated.
* Method adds response to a collection of z/OSMF responses, mark response as "succeeded" (response.success = true)
* and populate other fields of response with values from z/OSMF sresponse.
* @static
* @param {IZosmfIssueResponse} zosmfResponse zosmf console response, @see {IZosmfIssueResponse}
* @param {IConsoleResponse} response console response to be populated, @see {IConsoleResponse}
* @param {boolean} processResponses is set to true, append command response string to the console API response
* @return {IConsoleResponse} populated console response, @see {IConsoleResponse}
* @memberof ConsoleResponse
*/
static populate(zosmfResponse, response, processResponses) {
imperative_1.Logger.getImperativeLogger().trace(imperative_1.TextUtils.formatMessage(ConsoleConstants_1.displayResponse.message, { data: util_1.inspect(zosmfResponse) }));
imperative_1.Logger.getImperativeLogger().trace(imperative_1.TextUtils.formatMessage(ConsoleConstants_1.displayResponse.message, { data: util_1.inspect(response) }));
// Append the z/OSMF response - depending on the API request type, there may be more than 1 response -
// caused by follow ups to obtain additional information.
response.zosmfResponse = response.zosmfResponse.concat(zosmfResponse);
response.success = true;
// If this request specified a solicited keyword, indicate if the keyword was found in the console response.
if (!util_1.isNullOrUndefined(zosmfResponse["sol-key-detected"])) {
response.keywordDetected = zosmfResponse["sol-key-detected"];
}
// Append the command response string to the console response.
if (!util_1.isNullOrUndefined(zosmfResponse["cmd-response"]) && zosmfResponse["cmd-response"].length > 0
&& (util_1.isNullOrUndefined(processResponses) || processResponses !== false)) {
// the IBM responses sometimes have \r and sometimes \r\n, we will process them our here and hopefully
// return them with just \n.
response.commandResponse += zosmfResponse["cmd-response"].replace(/\r\n/g, "\n").replace(/\r/g, "\n");
// If there are messages append a line-break to ensure that additional messages collected are
// displayed properly.
if (response.commandResponse.length > 0
&& (response.commandResponse.indexOf("\n")
!== response.commandResponse.length - 1)) {
response.commandResponse += "\n";
}
}
// If the response key is present, set the last response key value in the response.
if (!util_1.isNullOrUndefined(zosmfResponse["cmd-response-key"])) {
response.lastResponseKey = zosmfResponse["cmd-response-key"];
}
// Collect the response url.
if (!util_1.isNullOrUndefined(zosmfResponse["cmd-response-url"])) {
response.cmdResponseUrl = zosmfResponse["cmd-response-url"];
}
return response;
}
/**
* Populate the console response with the Imperative error message.
* Method takes two parameters: Imperative error and response to be populated.
* Method save error message info failureResponse field and mark console response as "failed" (response.success = false)
* @tatic
* @param {ImperativeError} error Imperative error, @see {ImperativeError}
* @param {IConsoleResponse} response console response to be populated, @see {IConsoleResponse}
* @return {IConsoleResponse} populated console response, @see {IConsoleResponse}
* @memberof ConsoleResponse
*/
static populateError(error, response) {
imperative_1.Logger.getImperativeLogger().trace(imperative_1.TextUtils.formatMessage(ConsoleConstants_1.displayError.message, { data: util_1.inspect(error) }));
// Append the z/OSMF response - depending on the API request type, there may be more than 1 response -
// caused by follow ups to obtain additional information.
response.failureResponse = error;
response.success = false;
return response;
}
/**
* Provides empty console response
* @static
* @return {IConsoleResponse}
* @memberof ConsoleResponse
*/
static getEmptyConsoleResponse() {
return {
success: true,
zosmfResponse: [],
commandResponse: ""
};
}
/**
* Determines whether last z/OSMF response has empty content or not
* @static
* @param {IConsoleResponse} response command response
* @return {boolean} true if last z/OSMF response has empty "cmd-response", false otherwise
* @memberof ConsoleResponse
*/
static isLastZosmfResponseEmpty(response) {
let result = true;
if (!util_1.isNullOrUndefined(response) && response.zosmfResponse.length > 0) {
const lastResponse = response.zosmfResponse[response.zosmfResponse.length - 1];
result = util_1.isNullOrUndefined(lastResponse["cmd-response"]) || lastResponse["cmd-response"] === "";
}
return result;
}
}
exports.ConsoleResponseService = ConsoleResponseService;
//# sourceMappingURL=ConsoleResponseService.js.map