ember-cli/ember-cli

View on GitHub
lib/tasks/server/middleware/testem-url-rewriter/index.js

Summary

Maintainability
A
0 mins
Test Coverage
B
88%
'use strict';

const cleanBaseURL = require('clean-base-url');
const logger = require('heimdalljs-logger')('ember-cli:testem-url-rewriter');

class TestemUrlRewriterAddon {
  constructor(project) {
    this.name = 'testem-url-rewriter';
    this.project = project;
  }

  testemMiddleware(app) {
    let env = process.env.EMBER_ENV;
    logger.info('Reading config for environment "%s"', env);

    let config = this.project.config(env);
    logger.info('config.rootURL = %s', config.rootURL);

    let rootURL = cleanBaseURL(config.rootURL) || '/';
    logger.info('rootURL = %s', rootURL);

    app.use((req, res, next) => {
      let oldUrl = req.url;
      if (rootURL !== '/' && oldUrl.indexOf(rootURL) === 0) {
        req.url = `/${oldUrl.slice(rootURL.length)}`;
        logger.info('Rewriting %s %s -> %s', req.method, oldUrl, req.url);
      } else {
        logger.info('Ignoring %s %s', req.method, req.url);
      }

      next();
    });
  }
}

module.exports = TestemUrlRewriterAddon;