irest-app-test
Version:
iRest simulator application tooling and scripts - Backend
7 lines • 3.64 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty")),_url=require("url"),_responseHelper=_interopRequireDefault(require("../../../helpers/responseHelper")),_schemaDefaults=require("../../../constants/schemaDefaults"),_messages=require("../../../constants/messages"),_defaultResponse=_interopRequireDefault(require("./defaultResponse")),_saveResponse=_interopRequireDefault(require("./saveResponse")),_logger=_interopRequireDefault(require("../../../logger")),_sqliteConf=_interopRequireDefault(require("../../../sqliteConf")),_require=require("sequelize"),Op=_require.Op;function apiResponse(a,b){function c(){e.then(function(c){// no mock found in db
if(_logger["default"].debug(c),null===c)return _logger["default"].debug("No Matching Mock Found."),a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);// if mock method does not match with our
if(!c.allowedMethods.includes(a.method))return a.statusCode=405,a.responseMessage=_messages.methodNotAllowedErrorMessage,(0,_responseHelper["default"])(a,b);// disabled mock handler
if(!d&&(c.status===_schemaDefaults.status.DISABLED||c.mockStatus===_schemaDefaults.status.DISABLED))return a.statusCode=404,a.responseMessage=_messages.apiSimulationMockDisabledErrorMessage,(0,_responseHelper["default"])(a,b);// adding headers to response
var e={};// adding delay, if exist
if(c.headers=JSON.parse(c.headers),c.headers.forEach(function(a){e[a.key]=a.value}),b.header(e),b.header("Content-Type",c.contentType),a.mockData=c,c.isDelay){var f=1e3*c.delaySeconds;return setTimeout(function(){controlResponse(a,b)},f)}return controlResponse(a,b)})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)})}var d,e,f,g=_sqliteConf["default"].Mock,h=_sqliteConf["default"].TempMock,i=_sqliteConf["default"].ApiResponseSchemaType,j=_sqliteConf["default"].TempApiResponseSchemaType,k=a.query,l=k.tempId,m=k.rapidDoc,n=process.env.MOCK_BASE_URL;if(l)d=!0,a.isPreview=d,e=h.findOne({where:{_id:l},include:[{model:j}]}),c();else if(a.method===_schemaDefaults.mockMethodList[a.method]&&!l){var o=(0,_url.parse)(null===a||void 0===a?void 0:a.url),p=o.pathname,q=null===a||void 0===a?void 0:a.url.includes("type=save"),r=p.replace("".concat(n,"/"),"");/* eslint-disable object-shorthand *//* eslint-enable object-shorthand */f="true"===m,a.isRapidDoc=f,e=g.findOne({where:{endpoint:(0,_defineProperty2["default"])({},Op.like,"%".concat(r,"%")),serviceResponseType:(0,_defineProperty2["default"])({},Op.eq,q?"save":"default")},include:[{model:i}]}),e.then(function(d){if(!d)return a.statusCode=404,a.responseMessage=_messages.apiSimulationNoRecordFoundErrorMessage,(0,_responseHelper["default"])(a,b);return(d.allowedMethods=JSON.parse(d.allowedMethods),d.allowedMethods.includes(a.method))?void c():(a.statusCode=405,a.responseMessage=_messages.methodNotAllowedErrorMessage,(0,_responseHelper["default"])(a,b))})}}function controlResponse(a,b){var c=a.mockData;// Whenever user api's are called we need to send the response send as he/she asked in the response handler file
return a.mockApi=!0,c.serviceResponseType===_schemaDefaults.serviceResponseType.DEFAULT_SERVICE_RESPONSE?(0,_defaultResponse["default"])(a,b):c.serviceResponseType===_schemaDefaults.serviceResponseType.SAVE?(0,_saveResponse["default"])(a,b):void 0}var _default=exports["default"]=apiResponse;