• Jump To … +
    index.js helpers.js options-parser.js route-schemas.js default-options.js event-collection.js keen-event.js keenio-middleware.js identify.js proxy-response.js request.js response.js routes.js
  • routes.js

  • ¶
    "use strict";
    
    var helpers = require('./core/helpers');
    
    var RoutesModule = (function (options, eventEmitter) {
      this._ee = helpers.setDefaultEvents(eventEmitter, []);
    
      this.isExcludedRoute = function (route) {
        if ((!route.method && !route.methods) || !route.path) {
          return false;
        }
    
        var routePath = route.path;
        var routeMethod;
        if (route.methods) {
          for (var lowercaseMethod in route.methods) {
            routeMethod = lowercaseMethod.toUpperCase();
          }
        } else if (route.method) {
          routeMethod = route.method;
        }
    
        var excludeRoutes = options.excludeRoutes;
        for (var i = 0; i < excludeRoutes.length; i++) {
          var excludedRoute = excludeRoutes[i];
    
          if (routeMethod === excludedRoute.method && routePath === excludedRoute.route) {
            return true;
          }
        }
    
        return false;
      };
    
      this.getRouteConfig = function (route) {
        if ((!route.method && !route.methods) || !route.path) {
          return false;
        }
    
        var routePath = route.path;
        var routeMethod;
        if (route.methods) {
          for (var lowercaseMethod in route.methods) {
            routeMethod = lowercaseMethod.toUpperCase();
          }
        } else if (route.method) {
          routeMethod = route.method;
        }
    
        var routes = options.routes;
        var metadata = {};
        for (var i = 0; i < routes.length; i++) {
          var includedRoute = routes[i];
    
          if (routeMethod === includedRoute.method && routePath === includedRoute.route) {
            if (includedRoute.eventCollectionName) {
              metadata.eventCollectionName = includedRoute.eventCollectionName;
            }
            if (includedRoute.tag) {
              metadata.tag = includedRoute.tag;
            }
            return metadata;
          }
        }
        return false;
      };
    
      return this;
    
    }).bind({});
    
    module.exports = RoutesModule;