app.js 4.51 KB
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.initial = initial;
exports.addPostMethod = addPostMethod;
exports.addGetMethod = addGetMethod;
exports.startApp = startApp;

var _express = _interopRequireDefault(require("express"));

var _cors = _interopRequireDefault(require("cors"));

var _bodyParser = _interopRequireDefault(require("body-parser"));

var _logger = _interopRequireDefault(require("../utils/logger/logger"));

var _app_config = _interopRequireDefault(require("../config/app_config"));

var _v = _interopRequireDefault(require("uuid/v4"));

var _responseTime = _interopRequireDefault(require("response-time"));

var _ServiceData = _interopRequireDefault(require("../common/ServiceData"));

var _ResponseReply = _interopRequireDefault(require("../common/ResponseReply"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }

function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }

var app = (0, _express.default)();
var TAG = "[Application] ";

function initial() {
  app.use((0, _cors.default)());
  app.use(_bodyParser.default.json({
    limit: '50mb'
  }));
  app.use(function (req, res, next) {
    req.headers.__reqId = "[" + (0, _v.default)() + "] ";
    req.specialType = "request";
    req.startTime = new Date().getTime(); // stamp time start inservice

    _logger.default.info(req, "".concat(TAG, "Call \"").concat(req.originalUrl, "\""));

    _logger.default.info(req, "".concat(TAG, ":: Request Header :: ").concat(JSON.stringify(req.headers)));

    _logger.default.info(req, "".concat(TAG, ":: Request Data :: ").concat(JSON.stringify(req.body)));

    next();
  });
  app.use((0, _responseTime.default)(function (req, res, time) {
    var totalTimeInService = time;

    if (totalTimeInService > 100) {
      _logger.default.warning(req, TAG + "Total time in service [over 100ms] : ", Math.round(totalTimeInService), " ms");
    } else {
      _logger.default.info(req, TAG + "Total time in service : ", Math.round(totalTimeInService), " ms");
    }
  }));
  /**
   * Show App Detail
   */

  app.all("/app/version", function (req, res) {
    res.send({
      appName: _app_config.default.appName,
      description: _app_config.default.description,
      version: _app_config.default.version
    });
  });
}

function addPostMethod(uri, processor) {
  app.post(uri,
  /*#__PURE__*/
  function () {
    var _ref = _asyncToGenerator(
    /*#__PURE__*/
    regeneratorRuntime.mark(function _callee(req, res) {
      var sv, createResult;
      return regeneratorRuntime.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.prev = 0;
              sv = new _ServiceData.default();
              sv.setData(req, res);
              _context.next = 5;
              return processor.process(sv);

            case 5:
              createResult = _context.sent;
              res.send(_ResponseReply.default.success(createResult));
              _context.next = 13;
              break;

            case 9:
              _context.prev = 9;
              _context.t0 = _context["catch"](0);

              _logger.default.error(_context.t0 + '');

              res.send(_ResponseReply.default.error(_context.t0));

            case 13:
            case "end":
              return _context.stop();
          }
        }
      }, _callee, null, [[0, 9]]);
    }));

    return function (_x, _x2) {
      return _ref.apply(this, arguments);
    };
  }());
}

function addGetMethod(uri, process) {}

function startApp() {
  var server = app.listen(_app_config.default.systemConfig.APP_START_PORT, function () {
    _logger.default.info("".concat(TAG, "Starting ").concat(_app_config.default.appName, " (Version ").concat(_app_config.default.version, ") , Listening on port ").concat(_app_config.default.systemConfig.APP_START_PORT, " !"));
  }); // Set timeout for server

  server.setTimeout(1000 * 60 * 30);
}