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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | 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; } }); // Return UX server.route({ method: 'GET', path: swsSettings.pathUX+'/{file*}', handler: function (request, h) { let fileName = request.params.file; if(!fileName){ fileName = 'index.html'; } var options = { root: path.join(__dirname,'..','ux'), 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; |