3 'app/yangman/models/historylist.model',
4 'app/yangman/models/collectionlist.model',
5 'app/yangman/models/history-request.model',
7 function (HistoryListModel, CollectionListModel, HistoryRequestModel) {
10 angular.module('app.yangman').service('RequestsService', RequestsService);
12 RequestsService.$inject = ['PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService'];
14 function RequestsService(PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService){
18 service.applyParams = applyParams;
19 service.createEmptyCollectionList = createEmptyCollectionList;
20 service.createEmptyHistoryList = createEmptyHistoryList;
21 service.createHistoryRequestFromElement = createHistoryRequestFromElement;
22 service.createHistoryRequest = createHistoryRequest;
23 service.scanDataParams = scanDataParams;
24 service.validateFile = validateFile;
25 service.replaceStringInText = replaceStringInText;
28 * Scan used parameters in current line of codemirror
29 * @param {ParametersListModel} paramsObj - list of parameters to be searched for
30 * @param {string} lineString - line from current codemirror to be inspected
31 * @returns array of {ParameterModel}
33 function scanDataParams(paramsObj, lineString) {
35 var usedParamLabelArray = [];
37 var params = lineString ? lineString.match(/<<(?!<<)[a-zA-Z0-9]+>>/g) : null;
42 .forEach(function (param) {
43 usedParamLabelArray.push(removeUnwantedChars(param));
47 var returnedParamsList = paramsObj.list.filter( function (param){
48 var paramIndex = usedParamLabelArray.indexOf(param.key);
49 if ( paramIndex !== -1 ) {
50 return usedParamLabelArray.splice(paramIndex, 1);
57 usedParamLabelArray.forEach(function (param){
58 returnedParamsList.push(ParametersService.createParameter(param));
61 return returnedParamsList;
64 * remove chars greater then and less then from parameter definition
68 function removeUnwantedChars(val){
69 var string = val.substring(2);
70 return string.substring(0, string.indexOf('>>'));
80 function onlyUnique(value, index, self) {
81 return self.indexOf(value) === index;
86 * Replace all parameters with its values
91 function applyParams(paramsObj, data) {
92 var dataStr = JSON.stringify(data);
94 paramsObj.list.forEach(function (param){
95 dataStr = service.replaceStringInText(dataStr, '<<' + param.key + '>>', param.value);
98 return ParsingJsonService.parseJson(dataStr);
102 * Service for replacing string in text
104 * @param strToReplace
108 function replaceStringInText(text, strToReplace, newStr) {
109 var replacedText = text;
110 if (text.indexOf(strToReplace) > -1) {
111 replacedText = text.split(strToReplace).join(newStr);
118 * Validating collection import file
123 function validateFile(data, checkArray){
125 var obj = ParsingJsonService.parseJson(data);
127 return obj && obj.every(function (el){
128 return checkArray.every(function (arr){
129 return el.hasOwnProperty(arr);
138 * Service for creating basic history object
140 * @param receivedData
149 function createHistoryRequest(sentData, receivedData, path, operation, status, name, collection) {
151 var receivedDataProcessed = status === 'success' ? receivedData : null,
152 result = new HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService);
154 result.setData(sentData, receivedDataProcessed, status, path, operation, name, collection, Date.now());
160 * Creating {HistoryRequest} from elem containing all necessary data
161 * @param {Object} elem
164 function createHistoryRequestFromElement(elem) {
165 return service.createHistoryRequest(elem.sentData, elem.receivedData, elem.path, elem.method,
166 elem.status, elem.name, elem.collection, Date.now());
170 * Service for creating empty collection list
172 * @param getApiFunction
173 * @returns {CollectionList}
175 function createEmptyCollectionList(name){
176 var result = new CollectionListModel(ParsingJsonService, service);
177 result.setName(name);
182 * Service for creating empty history list
186 function createEmptyHistoryList(name){
187 var result = new HistoryListModel(ParsingJsonService, service);
188 result.setName(name);