UNPKG

@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
"use strict"; /* * 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