Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | /* swagger-stats Hapi plugin */ const path = require('path'); const promClient = require("prom-client"); const swsSettings = require('./swssettings'); const swsProcessor = require('./swsProcessor'); const swsUtil = require('./swsUtil'); const debug = require('debug')('sws:hapi'); const url = require('url'); const qs = require('qs'); const send = require('send'); /* HAPI Plugin */ class SwsHapi { constructor() { this.effectiveOptions = {}; this.processor = swsProcessor; } // Registers Hapi Plugin async register(server, options) { let processor = this.processor; server.events.on('response', function(request){ let nodeReq = request.raw.req; // Check if tracking if( ('sws' in nodeReq) && ('track' in nodeReq.sws) && (nodeReq.sws.track === false) ){ return; } let nodeRes = request.raw.res; try { processor.processResponse(nodeRes); }catch(e){ debug("processResponse:ERROR: " + e); } }); await server.ext('onRequest', function (request, h) { let nodeReq = request.raw.req; let nodeRes = request.raw.res; nodeRes._swsReq = nodeReq; nodeReq.sws = {}; nodeReq.sws.query = qs.parse(url.parse(nodeReq.url).query); let reqUrl = nodeReq.url; if(reqUrl.startsWith(swsSettings.uriPath)){ // Don't track sws requests nodeReq.sws.track = false; return h.continue; } try { processor.processRequest(nodeReq,nodeRes); }catch(e){ debug("processRequest:ERROR: " + e); } return h.continue; }); // Return statistics server.route({ method: 'GET', path: swsSettings.pathStats, handler: function (request, h) { return processor.getStats(request.raw.req.sws.query); } }); // Return metrics server.route({ method: 'GET', path: swsSettings.pathMetrics, handler: function (request, h) { const response = h.response(promClient.register.metrics()); response.code(200); response.header('Content-Type', 'text/plain'); return response; } }); // Redirect to ui server.route({ method: 'GET', path: swsSettings.uriPath, handler: function (request, h) { return h.redirect(swsSettings.pathUI); } }); // Return UI server.route({ method: 'GET', path: swsSettings.pathUI, handler: function (request, h) { return swsUtil.swsEmbeddedUIMarkup; } }); // Return Dist server.route({ method: 'GET', path: swsSettings.pathDist+'/{file*}', handler: function (request, h) { let fileName = request.params.file; var options = { root: path.join(__dirname,'..','dist'), dotfiles: 'deny' // TODO Caching }; request.raw.res.setHeader('Content-Type', send.mime.lookup(path.basename(fileName))); send(request.raw.req, fileName, options).pipe(request.raw.res); return h.abandon; } }) } } let swsHapi = new SwsHapi(); module.exports = swsHapi; |