Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / karma / lib / web-server.js
1 var fs = require('fs')
2 var http = require('http')
3 var path = require('path')
4 var connect = require('connect')
5
6 var common = require('./middleware/common')
7 var runnerMiddleware = require('./middleware/runner')
8 var stripHostMiddleware = require('./middleware/strip_host')
9 var karmaMiddleware = require('./middleware/karma')
10 var sourceFilesMiddleware = require('./middleware/source_files')
11 var proxyMiddleware = require('./middleware/proxy')
12
13 var log = require('./logger').create('web-server')
14
15 var createCustomHandler = function (customFileHandlers, /* config.basePath */ basePath) {
16   return function (request, response, next) {
17     for (var i = 0; i < customFileHandlers.length; i++) {
18       if (customFileHandlers[i].urlRegex.test(request.url)) {
19         return customFileHandlers[i].handler(request, response, 'fake/static', 'fake/adapter',
20           basePath, 'fake/root')
21       }
22     }
23
24     return next()
25   }
26 }
27
28 createCustomHandler.$inject = ['customFileHandlers', 'config.basePath']
29
30 var createWebServer = function (injector, emitter) {
31   var serveStaticFile = common.createServeFile(fs, path.normalize(__dirname + '/../static'))
32   var serveFile = common.createServeFile(fs)
33   var filesPromise = new common.PromiseContainer()
34
35   emitter.on('file_list_modified', function (files) {
36     filesPromise.set(files)
37   })
38
39   // locals for webserver module
40   // NOTE(vojta): figure out how to do this with DI
41   injector = injector.createChild([{
42     serveFile: ['value', serveFile],
43     serveStaticFile: ['value', serveStaticFile],
44     filesPromise: ['value', filesPromise]
45   }])
46
47   var proxyMiddlewareInstance = injector.invoke(proxyMiddleware.create)
48
49   var handler = connect()
50     .use(injector.invoke(runnerMiddleware.create))
51     .use(injector.invoke(stripHostMiddleware.create))
52     .use(injector.invoke(karmaMiddleware.create))
53     .use(injector.invoke(sourceFilesMiddleware.create))
54     // TODO(vojta): extract the proxy into a plugin
55     .use(proxyMiddlewareInstance)
56     // TODO(vojta): remove, this is only here because of karma-dart
57     // we need a better way of custom handlers
58     .use(injector.invoke(createCustomHandler))
59     .use(function (request, response) {
60       common.serve404(response, request.url)
61     })
62
63   var server = http.createServer(handler)
64
65   server.on('upgrade', function (req, socket, head) {
66     log.debug('upgrade %s', req.url)
67     proxyMiddlewareInstance.upgrade(req, socket, head)
68   })
69
70   return server
71 }
72
73 // PUBLIC API
74 exports.create = createWebServer