2 'app/yangman/models/historylist.model',
3 'app/yangman/models/collectionlist.model',
4 'app/yangman/models/history-request.model',
5 ], function (HistoryListModel, CollectionListModel, HistoryRequestModel) {
8 angular.module('app.yangman').service('RequestsService', RequestsService);
10 RequestsService.$inject = ['$filter', 'PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService'];
12 function RequestsService($filter, PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService){
16 service.applyParamsToObj = applyParamsToObj;
17 service.applyParamsToStr = applyParamsToStr;
18 service.createEmptyCollectionList = createEmptyCollectionList;
19 service.createEmptyHistoryList = createEmptyHistoryList;
20 service.createHistoryRequestFromElement = createHistoryRequestFromElement;
21 service.createHistoryRequest = createHistoryRequest;
22 service.scanDataParams = scanDataParams;
23 service.replaceStringInText = replaceStringInText;
26 * Scan used parameters in current line of codemirror
27 * @param {ParametersListModel} paramsObj - list of parameters to be searched for
28 * @param {string} lineString - line from current codemirror to be inspected
29 * @returns array of {ParameterModel}
31 function scanDataParams(paramsObj, lineString) {
33 var usedParamLabelArray = [];
35 var params = lineString ? lineString.match(/<<(?!<<)[a-zA-Z0-9]+>>/g) : null;
40 .forEach(function (param) {
41 usedParamLabelArray.push(removeUnwantedChars(param));
45 var returnedParamsList = paramsObj.list.filter( function (param){
46 var paramIndex = usedParamLabelArray.indexOf(param.name);
48 if ( paramIndex !== -1 ) {
49 return usedParamLabelArray.splice(paramIndex, 1);
56 usedParamLabelArray.forEach(function (param){
57 returnedParamsList.push(ParametersService.createParameter({ name: param }));
60 return returnedParamsList;
63 * remove chars greater then and less then from parameter definition
67 function removeUnwantedChars(val){
68 var string = val.substring(2);
69 return string.substring(0, string.indexOf('>>'));
79 function onlyUnique(value, index, self) {
80 return self.indexOf(value) === index;
85 * Replace all parameters with its values
90 function applyParamsToStr(paramsObj, str) {
91 if (paramsObj && paramsObj.hasOwnProperty('list')) {
92 paramsObj.list.forEach(function (param){
93 str = service.replaceStringInText(str, '<<' + param.name + '>>', param.value);
101 * Replace all parameters with its values
106 function applyParamsToObj(paramsObj, data) {
107 var dataStr = JSON.stringify(data);
109 dataStr = service.applyParamsToStr(paramsObj, dataStr);
111 return ParsingJsonService.parseJson(dataStr);
115 * Service for replacing string in text
117 * @param strToReplace
121 function replaceStringInText(text, strToReplace, newStr) {
122 var replacedText = text;
123 if (text.indexOf(strToReplace) > -1) {
124 replacedText = text.split(strToReplace).join(newStr);
130 * Service for creating basic history object
132 * @param receivedData
141 function createHistoryRequest(sentData, receivedData, path, operation, status, name, collection, timestamp,
142 responseStatus, responseStatusText, responseTime) {
143 // TODO: investigate, if this line is needed
144 // var receivedDataProcessed = status === 'success' ? receivedData : null,
145 var result = new HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService);
147 timestamp = timestamp || Date.now();
149 result.setData(sentData, receivedData, status, path, operation, name, collection, timestamp,
150 responseStatus, responseStatusText, responseTime);
156 * Creating {HistoryRequest} from elem containing all necessary data
157 * @param {Object} elem
160 function createHistoryRequestFromElement(elem) {
161 if (!elem.hasOwnProperty('timestamp') || elem.timestamp === ''){
162 elem.timestamp = Date.now();
165 return service.createHistoryRequest(elem.sentData, elem.receivedData, elem.path, elem.method,
166 elem.status, elem.name, elem.collection, elem.timestamp, elem.responseStatus,
167 elem.responseStatusText, elem.responseTime
172 * Service for creating empty collection list
174 * @param getApiFunction
175 * @returns {CollectionList}
177 function createEmptyCollectionList(name){
178 var result = new CollectionListModel(ParsingJsonService, service);
179 result.setName(name);
184 * Service for creating empty history list
188 function createEmptyHistoryList(name){
189 var result = new HistoryListModel($filter, ParsingJsonService, service);
190 result.setName(name);