irest-app-test
Version:
iRest is a zero-configuration application that allows you to easily create/manage APIs, generate random data on demand and perform operations on that data using REST interface.
9 lines • 6.6 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof")),_messages=require("../../../constants/messages"),_responseHelper=_interopRequireDefault(require("../../../helpers/responseHelper")),_schemaDefaults=require("../../../constants/schemaDefaults"),_logger=_interopRequireDefault(require("../../../logger")),_sqliteConf=_interopRequireDefault(require("../../../sqliteConf")),_process$env=process.env,API_BASE_URL=_process$env.API_BASE_URL,MOCK_BASE_URL=_process$env.MOCK_BASE_URL;function create(a,b){var c=_sqliteConf["default"].User,d=_sqliteConf["default"].Project,e=a.body,f=a.query.isPreview;// validate user exist or not
c.findByPk(e.userId).then(function(c){if(c){e.path=MOCK_BASE_URL;var g=_schemaDefaults.serviceResponseType.EXISTING_API,h=_schemaDefaults.serviceResponseType.DEFAULT_SERVICE_RESPONSE;// handle existing api for POST CREATION CALL
// service response will be saved when user hits the rest call
if(e.serviceResponseType!==g&&delete e.referenceId,e.isDelay||delete e.delaySeconds,e.isDynamicResponse||(delete e.dynamicResponseKey,delete e.dynamicResponseRandom,delete e.dynamicResponseSpecific,delete e.dynamicResponseSpecificKeyValue,delete e.isDynamicImportCount,delete e.dynamicImportCount,delete e.isDynamicImportSize,delete e.dynamicImportSize),e.isDynamicResponse&&e.dynamicResponseRandom&&(delete e.dynamicResponseSpecific,delete e.dynamicResponseSpecificKeyValue),e.isDynamicResponse&&e.dynamicResponseSpecific&&(delete e.dynamicResponseRandom,"object"===(0,_typeof2["default"])(e.dynamicResponseSpecificKeyValue)&&e.dynamicResponseSpecificKeyValue.constructor===Object||"object"===(0,_typeof2["default"])(e.dynamicResponseSpecificKeyValue)&&e.dynamicResponseSpecificKeyValue.constructor===Array))// stringify object/array body
try{e.dynamicResponseSpecificKeyValue=JSON.stringify(e.dynamicResponseSpecificKeyValue)}catch(c){return a.statusCode=400,a.responseMessage=_messages.invalidDynamicResponseSpecificKeyValueMessage,(0,_responseHelper["default"])(a,b)}e.isDynamicResponse&&e.isDynamicImportCount&&(delete e.isDynamicImportSize,delete e.dynamicImportSize),e.isDynamicResponse&&e.isDynamicImportSize&&(delete e.isDynamicImportCount,delete e.dynamicImportCount),e.isBulkDataCount&&(delete e.isBulkDataSize,delete e.bulkDataSize),e.isBulkDataSize&&(delete e.isBulkDataCount,delete e.bulkDataCount);// dynamic response extra key removal before insert into the DB
// end point
// manually validate the json body and convert into string before save
var i=e.serviceResponseBody;if("object"===(0,_typeof2["default"])(i)&&i.constructor===Object)try{i=JSON.stringify(i),e.serviceResponseBody=i}catch(c){return a.statusCode=400,a.responseMessage=_messages.invalidServiceResponseBodyMessage,(0,_responseHelper["default"])(a,b)}d.increment({count:f?0:1},{where:{_id:e.projectId}}).then(function(c){return(_logger["default"].debug(c),c)?(e.endpointRequestPath=e.endpoint,e.endpoint="".concat(e.projectName,"/").concat(e.endpoint),e.headers=JSON.stringify(e.headers),e.params=JSON.stringify(e.params),e.serviceResponseType===h?defaultOptionHandler(a,b,f):saveOptionHandler(a,b,f)):(a.statusCode=204,(0,_responseHelper["default"])(a,b))})}else return a.responseMessage=_messages.mockCreationUserNotExistMessage,a.statusCode=400,(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(c),(0,_responseHelper["default"])(a,b)})}function saveOptionHandler(a,b,c){var d=a.body,e=c?_sqliteConf["default"].TempMock:_sqliteConf["default"].Mock,f=c?_sqliteConf["default"].TempApiResponseSchemaType:_sqliteConf["default"].ApiResponseSchemaType,g=d.ApiResponseSchemaTypes,h=d.statusCode,i=[];d.allowedMethods=JSON.stringify(d.allowedMethods),e.create(d).then(function(c){try{Object.keys(g).forEach(function(a){i.push({method:a,successResponse:JSON.stringify(g[a]),statusCode:h,projectId:null===d||void 0===d?void 0:d.projectId,mockId:c._id})})}catch(c){return _logger["default"].error(c),(0,_responseHelper["default"])(a,b)}f.bulkCreate(i).then(function(){return a.responseMessage=_messages.mockCreationSuccessMessage,a.statusCode=201,a.responseData={id:c._id,mockName:c.mockName,allowedMethods:c.allowedMethods,mockUrl:"".concat(API_BASE_URL).concat(MOCK_BASE_URL,"/").concat(c.endpoint)},(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(c),(0,_responseHelper["default"])(a,b)})})["catch"](function(c){var d;return null!==c&&void 0!==c&&null!==(d=c.fields)&&void 0!==d&&d.includes("endpoint")?(a.statusCode=417,a.responseMessage=_messages.mockCreationUniqueEndpointExistMessage,(0,_responseHelper["default"])(a,b)):(_logger["default"].error(c),(0,_responseHelper["default"])(a,b))})}// serviceResponseType === "default"
function defaultOptionHandler(a,b,c){var d=c?_sqliteConf["default"].TempMock:_sqliteConf["default"].Mock,e=c?_sqliteConf["default"].TempApiResponseSchemaType:_sqliteConf["default"].ApiResponseSchemaType,f=a.body,g=f.ApiResponseSchemaTypes,h=f.statusCode,i=[];f.allowedMethods=JSON.stringify(f.allowedMethods),d.create(f).then(function(d){try{Object.keys(g).forEach(function(a){i.push({method:a,successResponse:JSON.stringify(""===g[a]?{}:g[a]),statusCode:h,projectId:null===f||void 0===f?void 0:f.projectId,mockId:d._id})})}catch(c){return _logger["default"].error(c),(0,_responseHelper["default"])(a,b)}e.bulkCreate(i).then(function(){return a.mok=d,storeServiceResponse(a,b,c)})["catch"](function(c){return _logger["default"].error(c),(0,_responseHelper["default"])(a,b)})})["catch"](function(c){var d;return null!==c&&void 0!==c&&null!==(d=c.fields)&&void 0!==d&&d.includes("endpoint")?(a.statusCode=417,a.responseMessage=_messages.mockCreationUniqueEndpointExistMessage,(0,_responseHelper["default"])(a,b)):(_logger["default"].error(c),(0,_responseHelper["default"])(a,b))})}function storeServiceResponse(a,b,c){var d=a.body;d.mockId=a.mok._id;var e=c?_sqliteConf["default"].TempServiceResponse:_sqliteConf["default"].ServiceResponse;e.create(d).then(function(){a.responseMessage=_messages.mockCreationSuccessMessage,a.statusCode=201;var c=a.mok;return a.responseData={id:c._id,mockName:c.mockName,mockUrl:"".concat(API_BASE_URL).concat(MOCK_BASE_URL,"/").concat(c.endpoint),allowedMethods:c.allowedMethods},(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(c),(0,_responseHelper["default"])(a,b)})}var _default=create;exports["default"]=_default;