summaryrefslogtreecommitdiffstats
path: root/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/common.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/common.js')
-rw-r--r--vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/common.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/common.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/common.js
new file mode 100644
index 00000000..2e37475d
--- /dev/null
+++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/karma/lib/middleware/common.js
@@ -0,0 +1,88 @@
+/**
+ * This module contains some common helpers shared between middlewares
+ */
+
+var mime = require('mime')
+var log = require('../logger').create('web-server')
+
+var PromiseContainer = function () {
+ var promise
+
+ this.then = function (success, error) {
+ return promise.then(success, error)
+ }
+
+ this.set = function (newPromise) {
+ promise = newPromise
+ }
+}
+
+var serve404 = function (response, path) {
+ log.warn('404: ' + path)
+ response.writeHead(404)
+ return response.end('NOT FOUND')
+}
+
+var createServeFile = function (fs, directory) {
+ var cache = Object.create(null)
+
+ return function (filepath, response, transform, content) {
+ var responseData
+
+ if (directory) {
+ filepath = directory + filepath
+ }
+
+ if (!content && cache[filepath]) {
+ content = cache[filepath]
+ }
+
+ // serve from cache
+ if (content) {
+ response.setHeader('Content-Type', mime.lookup(filepath, 'text/plain'))
+
+ // call custom transform fn to transform the data
+ responseData = transform && transform(content) || content
+
+ response.writeHead(200)
+
+ log.debug('serving (cached): ' + filepath)
+ return response.end(responseData)
+ }
+
+ return fs.readFile(filepath, function (error, data) {
+ if (error) {
+ return serve404(response, filepath)
+ }
+
+ cache[filepath] = data.toString()
+
+ response.setHeader('Content-Type', mime.lookup(filepath, 'text/plain'))
+
+ // call custom transform fn to transform the data
+ responseData = transform && transform(data.toString()) || data
+
+ response.writeHead(200)
+
+ log.debug('serving: ' + filepath)
+ return response.end(responseData)
+ })
+ }
+}
+
+var setNoCacheHeaders = function (response) {
+ response.setHeader('Cache-Control', 'no-cache')
+ response.setHeader('Pragma', 'no-cache')
+ response.setHeader('Expires', (new Date(0)).toString())
+}
+
+var setHeavyCacheHeaders = function (response) {
+ response.setHeader('Cache-Control', ['public', 'max-age=31536000'])
+}
+
+// PUBLIC API
+exports.PromiseContainer = PromiseContainer
+exports.createServeFile = createServeFile
+exports.setNoCacheHeaders = setNoCacheHeaders
+exports.setHeavyCacheHeaders = setHeavyCacheHeaders
+exports.serve404 = serve404