Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / karma / lib / middleware / source_files.js
1 /**
2  * Source Files middleware is responsible for serving all the source files under the test.
3  */
4
5 var querystring = require('querystring')
6 var common = require('./common')
7 var pause = require('connect').utils.pause
8
9 var findByPath = function (files, path) {
10   for (var i = 0; i < files.length; i++) {
11     if (files[i].path === path) {
12       return files[i]
13     }
14   }
15
16   return null
17 }
18
19 var createSourceFilesMiddleware = function (filesPromise, serveFile,
20   /* config.basePath */ basePath) {
21   return function (request, response, next) {
22     // TODO(vojta): serve files under urlRoot (also update the formatError)
23     var requestedFilePath = querystring.unescape(request.url)
24       .replace(/\?.*$/, '')
25       .replace(/^\/absolute/, '')
26       .replace(/^\/base/, basePath)
27
28     // Need to pause the request because of proxying, see:
29     // https://groups.google.com/forum/#!topic/q-continuum/xr8znxc_K5E/discussion
30     // TODO(vojta): remove once we don't care about Node 0.8
31     var pausedRequest = pause(request)
32
33     return filesPromise.then(function (files) {
34       // TODO(vojta): change served to be a map rather then an array
35       var file = findByPath(files.served, requestedFilePath)
36
37       if (file) {
38         serveFile(file.contentPath || file.path, response, function () {
39           if (/\?\w+/.test(request.url)) {
40             // files with timestamps - cache one year, rely on timestamps
41             common.setHeavyCacheHeaders(response)
42           } else {
43             // without timestamps - no cache (debug)
44             common.setNoCacheHeaders(response)
45           }
46         }, file.content)
47       } else {
48         next()
49       }
50
51       pausedRequest.resume()
52     })
53   }
54 }
55
56 createSourceFilesMiddleware.$inject = ['filesPromise', 'serveFile', 'config.basePath']
57
58 // PUBLIC API
59 exports.create = createSourceFilesMiddleware