}
function saveRequestToCollection(event) {
+ var historyReq = null,
+ sentData = { reqData: null },
+ receivedData = { reqData: null };
if (requestHeader.selectedShownDataType === 'form') {
requestHeader.setRequestUrl();
}
- var historyReq = RequestService.createHistoryRequest(null, null, requestHeader.requestUrl,
- requestHeader.selectedOperation, '', '', ''),
- reqData = {};
-
- if ( requestHeader.selectedShownDataType === 'req-data' ) {
- var params = { reqData: null };
- $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_SENT', params);
- reqData = params.reqData ? angular.fromJson(params.reqData) : {};
- }
- else {
- var data = { srcData: {} };
+ historyReq = RequestService.createHistoryRequest(
+ null, null, requestHeader.requestUrl, requestHeader.selectedOperation, '', '', ''
+ );
- YangmanService.setSrcDataByDataType(data, $scope.node, {}, 'form');
- reqData = data.srcData;
- }
+ $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_SENT', sentData);
+ $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_RECEIVED', receivedData);
- historyReq.setExecutionData(reqData, {}, '');
+ RequestService.fillRequestByMethod(
+ historyReq, sentData, receivedData, requestHeader.selectedOperation, $scope.node,
+ requestHeader.selectedShownDataType
+ );
$scope.rootBroadcast('YANGMAN_SAVE_REQUEST_TO_COLLECTION', { event: event, reqObj: historyReq });
}
if ($scope.node){
YangmanService.fillNodeFromResponse($scope.node, preparedReceivedData);
+ YangmanService.handleNodeIdentifier(
+ $scope.parametersList, $scope.selectedSubApi, $scope.node
+ );
$scope.node.expanded = true;
$scope.rootBroadcast('YANGMAN_DISABLE_ADDING_LIST_ELEMENT');
function showForm(reqObj) {
var data = reqObj.sentData;
- // exception for get method
+ // exception for get meth
if ( reqObj.method === 'GET' ) {
data = reqObj.receivedData;
- $scope.rootBroadcast('YANGMAN_SET_CODEMIRROR_DATA_RECEIVED', { data: reqObj.setDataForView(data) });
}
+ $scope.rootBroadcast(
+ 'YANGMAN_SET_CODEMIRROR_DATA_RECEIVED', { data: reqObj.setDataForView(reqObj.receivedData) }
+ );
+ $scope.rootBroadcast(
+ 'YANGMAN_SET_CODEMIRROR_DATA_SENT', { data: reqObj.setDataForView(reqObj.sentData) }
+ );
+
$scope.rootBroadcast('YANGMAN_SET_ERROR_DATA',
reqObj.receivedData && reqObj.receivedData.hasOwnProperty('errors') ? reqObj.receivedData : {});
*/
function saveRequests(requests){
requests.forEach(function (reqObj){
- vm.collectionList.addItemToList(reqObj);
+ vm.collectionList.addItemToList(RequestsService.clearUnnecessaryProperties(reqObj.clone()));
vm.collectionList.saveToStorage();
refreshCollectionsWithExpansion();
});
angular.module('app.yangman').service('RequestsService', RequestsService);
- RequestsService.$inject = ['$filter', 'PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService'];
+ RequestsService.$inject = [
+ '$filter', 'PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService',
+ 'RequestBuilderService',
+ ];
- function RequestsService($filter, PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService){
+ function RequestsService(
+ $filter, PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService, RequestBuilderService
+ ){
var service = {};
service.applyParamsToObj = applyParamsToObj;
service.applyParamsToStr = applyParamsToStr;
+ service.clearUnnecessaryProperties = clearUnnecessaryProperties;
service.createEmptyCollectionList = createEmptyCollectionList;
service.createEmptyHistoryList = createEmptyHistoryList;
service.createHistoryRequestFromElement = createHistoryRequestFromElement;
service.createHistoryRequest = createHistoryRequest;
+ service.fillRequestByMethod = fillRequestByMethod;
+ service.fillRequestByViewType = fillRequestByViewType;
+ service.findIdentifierByParam = findIdentifierByParam;
service.scanDataParams = scanDataParams;
service.replaceStringInText = replaceStringInText;
+ /**
+ * Clear unnecesary properties for saving to collection
+ * @param request
+ */
+ function clearUnnecessaryProperties(request){
+ request.responseStatus = null;
+ request.responseStatusText = null;
+ request.responseTime = null;
+
+ return request;
+ }
+
+ /**
+ * Find parametrized identifier in path array
+ * @param params
+ * @param pathElement
+ * @returns {*}
+ */
+ function findIdentifierByParam(params, pathElement){
+ var foundIdentifier = null;
+
+ if ( pathElement.hasIdentifier() ){
+ pathElement.identifiers.some(function (item){
+ return params.list.some(function (param){
+ var contained = item.value.indexOf('<<' + param.name + '>>') > -1;
+
+ if ( contained ){
+ foundIdentifier = item;
+ }
+
+ return contained;
+ });
+ });
+ }
+
+ return foundIdentifier;
+ }
+
+ /**
+ * Get data for saving request depend on view type
+ * @param node
+ * @param viewType
+ * @param requestData
+ * @param dataType
+ * @param method
+ * @returns {*}
+ */
+ function fillRequestByViewType(node, viewType, requestData, dataType, method){
+ var setDataByViewType = {
+ form: function () {
+ var data = {},
+ emptyObject = method === 'POST' && dataType === 'received' && node.type !== 'rpc';
+
+ if ( !emptyObject ) {
+ node.buildRequest(RequestBuilderService, data, node.module);
+ data = checkNodeTypeData(node, data, dataType, requestData);
+ }
+
+ return data;
+ },
+ 'req-data': function (){
+ return requestData ? angular.fromJson(requestData) : {};
+ },
+ };
+
+ return setDataByViewType[viewType]();
+
+ /**
+ * Exceptions based on node type
+ * @param node
+ * @param data
+ * @param dataType
+ * @param requestData
+ * @returns {*}
+ */
+ function checkNodeTypeData(node, data, dataType, requestData){
+ var copyData = angular.copy(data),
+ setDataByNodeType = {
+ rpc: function (){
+
+ if ( dataType === 'received' ) {
+ copyData = requestData ? angular.fromJson(requestData) : {};
+ }
+
+ return copyData;
+ },
+ default: function () {
+ return data;
+ },
+ };
+
+ return (setDataByNodeType[node.type] || setDataByNodeType.default)();
+ }
+ }
+
+ /**
+ * Fill history request data depend on selected method - saving to collection
+ * @param requestObj
+ * @param sentData
+ * @param receivedData
+ * @param method
+ */
+ function fillRequestByMethod(requestObj, sentData, receivedData, method, node, viewType){
+ var setDataByMethod = {
+ GET: function (){
+ return {
+ sentData: {},
+ receivedData: receivedData.reqData ? angular.fromJson(receivedData.reqData) : {},
+ };
+ },
+ POST: function (){
+ return {
+ sentData: fillRequestByViewType(node, viewType, sentData.reqData, 'sent', method),
+ receivedData: fillRequestByViewType(
+ node, viewType, receivedData.reqData, 'received', method
+ ),
+ };
+ },
+ PUT: function (){
+ return {
+ sentData: fillRequestByViewType(node, viewType, sentData.reqData, 'sent', method),
+ receivedData: {},
+ };
+ },
+ DELETE: function (){
+ return {
+ sentData: {},
+ receivedData: {},
+ };
+ },
+ },
+ data = setDataByMethod[method]();
+
+ requestObj.setExecutionData(data.sentData, data.receivedData, '');
+ }
+
/**
* Scan used parameters in current line of codemirror
* @param {ParametersListModel} paramsObj - list of parameters to be searched for
executeRequestOperation: executeRequestOperation,
fillNodeFromResponse: fillNodeFromResponse,
getDataStoreIndex: getDataStoreIndex,
+ handleNodeIdentifier: handleNodeIdentifier,
prepareAllRequestData: prepareAllRequestData,
prepareReceivedData: prepareReceivedData,
putIntoObj: putIntoObj,
return service;
+ /**
+ * Handle param continuum between header path array and node data
+ * @param parametersList
+ * @param selectedSubApi
+ * @param node
+ */
+ function handleNodeIdentifier(parametersList, selectedSubApi, node){
+ var identifier = RequestsService.findIdentifierByParam(
+ parametersList, selectedSubApi.pathArray[selectedSubApi.pathArray.length - 1]
+ );
+
+ if ( identifier ){
+ PathUtilsService.fillListNode(node, identifier.label, identifier.value);
+ }
+ }
+
/**
* Put data to output container if root node is rpc
* @param data