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 = ['PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService'];
12 function RequestsService(PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService){
16 service.applyParams = applyParams;
17 service.createEmptyCollectionList = createEmptyCollectionList;
18 service.createEmptyHistoryList = createEmptyHistoryList;
19 service.createHistoryRequestFromElement = createHistoryRequestFromElement;
20 service.createHistoryRequest = createHistoryRequest;
21 service.scanDataParams = scanDataParams;
22 service.replaceStringInText = replaceStringInText;
25 * Scan used parameters in current line of codemirror
26 * @param {ParametersListModel} paramsObj - list of parameters to be searched for
27 * @param {string} lineString - line from current codemirror to be inspected
28 * @returns array of {ParameterModel}
30 function scanDataParams(paramsObj, lineString) {
32 var usedParamLabelArray = [];
34 var params = lineString ? lineString.match(/<<(?!<<)[a-zA-Z0-9]+>>/g) : null;
39 .forEach(function (param) {
40 usedParamLabelArray.push(removeUnwantedChars(param));
44 var returnedParamsList = paramsObj.list.filter( function (param){
45 var paramIndex = usedParamLabelArray.indexOf(param.key);
46 if ( paramIndex !== -1 ) {
47 return usedParamLabelArray.splice(paramIndex, 1);
54 usedParamLabelArray.forEach(function (param){
55 returnedParamsList.push(ParametersService.createParameter(param));
58 return returnedParamsList;
61 * remove chars greater then and less then from parameter definition
65 function removeUnwantedChars(val){
66 var string = val.substring(2);
67 return string.substring(0, string.indexOf('>>'));
77 function onlyUnique(value, index, self) {
78 return self.indexOf(value) === index;
83 * Replace all parameters with its values
88 function applyParams(paramsObj, data) {
89 var dataStr = JSON.stringify(data);
91 paramsObj.list.forEach(function (param){
92 dataStr = service.replaceStringInText(dataStr, '<<' + param.key + '>>', param.value);
95 return ParsingJsonService.parseJson(dataStr);
99 * Service for replacing string in text
101 * @param strToReplace
105 function replaceStringInText(text, strToReplace, newStr) {
106 var replacedText = text;
107 if (text.indexOf(strToReplace) > -1) {
108 replacedText = text.split(strToReplace).join(newStr);
117 * Service for creating basic history object
119 * @param receivedData
128 function createHistoryRequest(sentData, receivedData, path, operation, status, name, collection, timestamp) {
130 var receivedDataProcessed = status === 'success' ? receivedData : null,
131 result = new HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService);
133 result.setData(sentData, receivedDataProcessed, status, path, operation, name, collection, timestamp);
139 * Creating {HistoryRequest} from elem containing all necessary data
140 * @param {Object} elem
143 function createHistoryRequestFromElement(elem) {
144 if (!elem.hasOwnProperty('timestamp')){
145 elem.timestamp = Date.now();
147 return service.createHistoryRequest(elem.sentData, elem.receivedData, elem.path, elem.method,
148 elem.status, elem.name, elem.collection, elem.timestamp);
152 * Service for creating empty collection list
154 * @param getApiFunction
155 * @returns {CollectionList}
157 function createEmptyCollectionList(name){
158 var result = new CollectionListModel(ParsingJsonService, service);
159 result.setName(name);
164 * Service for creating empty history list
168 function createEmptyHistoryList(name){
169 var result = new HistoryListModel(ParsingJsonService, service);
170 result.setName(name);