all files / swagger-node-runner/fittings/ express_compatibility.js

100% Statements 28/28
100% Branches 16/16
100% Functions 6/6
100% Lines 25/25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46        14×   14× 73× 73×         73× 46× 46× 46×     73× 39× 28× 28× 28×       73× 19×     73× 73× 73× 39×       73×    
'use strict';
 
var debug = require('debug')('swagger:cors');
var Url = require('url');
 
module.exports = function create(fittingDef, bagpipes) {
 
  debug('config: %j', fittingDef);
 
  return function express_compatibility(context, cb) {
    debug('exec');
    expressCompatibility(context.request, context.response, cb);
  }
};
 
function expressCompatibility(req, res, next) {
 
  if (!req.query || !req.path) {
    var url = Url.parse(req.url, !req.query);
    req.path = url.path;
    req.query = url.query;
  }
 
  if (!res.json) {
    res.json = function(obj) {
      res.statusCode = res.statusCode || 200;
      res.setHeader('Content-Type', 'application/json');
      res.end(JSON.stringify(obj));
    };
  }
 
  if (!req.get) req.get = function(name) {
    return this.headers[name];
  };
 
  if (!res.set) { res.set = res.setHeader; }
  if (!res.get) { res.get = res.getHeader; }
  if (!res.status) {
    res.status = function(status) {
      res.statusCode = status;
    };
  }
 
  next();
}