'ENV',
'ParsingJsonService',
'RequestsService',
+ 'PathUtilsService',
];
YangUtilsRestangularService,
ENV,
ParsingJsonService,
- RequestsService
+ RequestsService,
+ PathUtilsService
){
var service = {
cutUrl: cutUrl,
executeRequestOperation: executeRequestOperation,
fillNodeFromResponse: fillNodeFromResponse,
getDataStoreIndex: getDataStoreIndex,
+ handleNodeIdentifier: handleNodeIdentifier,
prepareAllRequestData: prepareAllRequestData,
prepareReceivedData: prepareReceivedData,
putIntoObj: putIntoObj,
+ setSrcDataByDataType: setSrcDataByDataType,
validateFile: validateFile,
};
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
* @param destinationObj
*/
function putIntoObj(sourceObj, destinationObj, containter){
- Object.keys(sourceObj).forEach(function(prop){
- destinationObj[containter] = destinationObj[containter] ? destinationObj[containter] : {};
- destinationObj[containter][prop] = sourceObj[prop];
- });
+ if ( sourceObj ) {
+ Object.keys(sourceObj).forEach(function(prop){
+ destinationObj[containter] = destinationObj[containter] ? destinationObj[containter] : {};
+ destinationObj[containter][prop] = sourceObj[prop];
+ });
+ }
}
/**
if ( outputType === 'form' ){
var dObj = {};
+
+ if ( !sData ) {
+ sData = {};
+ sData[node.label] = {};
+ }
+
putIntoObj(rData, dObj, node.label);
putIntoObj(sData[node.label] ? sData[node.label] : sData, dObj, node.label);
return dObj;
return result ? rIndex : null;
}
+ /**
+ * Apply all parametrized values into request (data, url, pathArray)
+ * @param allPreparedData
+ * @param params
+ * @param selSubApiCopy
+ * @param requestUrl
+ */
+ function setParametrizedData(allPreparedData, params, selSubApiCopy, requestUrl){
+ allPreparedData.reqFullUrl = RequestsService.applyParamsToStr(params, requestUrl);
+
+ // apply parametrized value into request data in string form
+ allPreparedData.reqString =
+ selSubApiCopy ? RequestsService.applyParamsToStr(params, selSubApiCopy.buildApiRequestString()) : '';
+
+ if ( !angular.equals(allPreparedData.reqFullUrl, requestUrl) && selSubApiCopy ){
+ // fill parametrized data into path array
+ PathUtilsService.fillPath(selSubApiCopy.pathArray, allPreparedData.reqFullUrl);
+ }
+
+ allPreparedData.reqData = RequestsService.applyParamsToObj(params, allPreparedData.srcData);
+ }
+
+ /**
+ * Set source data into request object based on shown data type
+ * @param allPreparedData
+ * @param node
+ * @param requestData
+ * @param dataType
+ */
+ function setSrcDataByDataType(allPreparedData, node, requestData, dataType){
+ if ( dataType === 'form' && node){
+ node.buildRequest(RequestBuilderService, requestData, node.module);
+ allPreparedData.srcData = angular.copy(requestData);
+ }
+ else {
+ allPreparedData.srcData = requestData;
+ }
+ }
+
/**
* Prepare all necessary data for executing or saving request
* @param selectedApi
function prepareAllRequestData(selectedApi, selectedSubApi, operation, node, dataType, requestUrl, requestData,
params) {
var allPreparedData = {
- customRestangular: null,
- headers: {},
- operation: '',
- reqString:
- selectedSubApi ?
- RequestsService.applyParamsToStr(params, selectedSubApi.buildApiRequestString()) : '',
- reqHeaders: {},
- reqData: '',
- srcData: '',
- };
-
- if ( dataType === 'form' && node){
- node.buildRequest(RequestBuilderService, requestData, node.module);
- allPreparedData.srcData = angular.copy(requestData);
- }
- else {
- allPreparedData.srcData = requestData;
- }
-
- allPreparedData.reqData = RequestsService.applyParamsToObj(params, allPreparedData.srcData);
+ customRestangular: null,
+ headers: {},
+ operation: '',
+ reqString: '',
+ reqHeaders: {},
+ reqData: '',
+ srcData: '',
+ reqFullUrl: '',
+ },
+ selSubApiCopy = angular.copy(selectedSubApi);
+ setSrcDataByDataType(allPreparedData, node, requestData, dataType);
+ setParametrizedData(allPreparedData, params, selSubApiCopy, requestUrl);
// prepare req data
if (operation === 'GET' || operation === 'DELETE'){
}
else if ( operation === 'POST' ){
- if ( selectedSubApi ) {
+ if ( selSubApiCopy ) {
allPreparedData.reqData = YangUtilsService.postRequestData(
allPreparedData.reqData,
allPreparedData.reqString,
- selectedSubApi
+ selSubApiCopy
);
}
}
// set correct host into restangular based on shown data type and prepare data
if ( dataType === 'req-data' ){
- requestUrl = RequestsService.applyParamsToStr(params, requestUrl);
- var parser = locationHelper(requestUrl, ['pathname', 'origin']),
+ var parser = locationHelper(allPreparedData.reqFullUrl, ['pathname', 'origin']),
raParam = '';
YangUtilsRestangularService.setBaseUrl(parser.origin);