UNPKG

blackbird-server

Version:
339 lines (338 loc) 12 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for modules/utils/createConnection.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../prettify.css" /> <link rel="stylesheet" href="../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../index.html">all files</a> / <a href="index.html">modules/utils/</a> createConnection.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">19.05% </span> <span class="quiet">Statements</span> <span class='fraction'>8/42</span> </div> <div class='fl pad1y space-right2'> <span class="strong">0% </span> <span class="quiet">Branches</span> <span class='fraction'>0/27</span> </div> <div class='fl pad1y space-right2'> <span class="strong">0% </span> <span class="quiet">Functions</span> <span class='fraction'>0/4</span> </div> <div class='fl pad1y space-right2'> <span class="strong">19.05% </span> <span class="quiet">Lines</span> <span class='fraction'>8/42</span> </div> </div> </div> <div class='status-line low'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">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</td><td class="line-coverage quiet"><span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Connection = require("../Connection"); const Location = require("../Location"); const R = require("ramda"); &nbsp; /** * Standard ports for HTTP protocols. */ const STANDARD_PORTS = { "http:": "80", "https:": "443" }; &nbsp; <span class="fstat-no" title="function not covered" >function ensureTrailingColon(string) {</span> <span class="cstat-no" title="statement not covered" > return string[string.length - 1] === ":" ? string : `${string}:`;</span> } &nbsp; /** * Creates a new Location object that is reverse-proxy aware. */ <span class="fstat-no" title="function not covered" >function createLocation(nodeRequest) {</span> <span class="cstat-no" title="statement not covered" > const headers = nodeRequest.headers;</span> &nbsp; <span class="cstat-no" title="statement not covered" > let protocol;</span> <span class="cstat-no" title="statement not covered" > if (process.env.HTTPS === "on" || headers["x-forwarded-ssl"] === "on" || headers["font-end-https"] === "on") {</span> <span class="cstat-no" title="statement not covered" > protocol = "https:";</span> } else <span class="cstat-no" title="statement not covered" >if (headers["x-url-scheme"]) {</span> <span class="cstat-no" title="statement not covered" > protocol = ensureTrailingColon(headers["x-url-scheme"]);</span> } else <span class="cstat-no" title="statement not covered" >if (headers["x-forwarded-protocol"]) {</span> <span class="cstat-no" title="statement not covered" > protocol = ensureTrailingColon(headers["x-forwarded-protocol"].split(",")[0]);</span> } else <span class="cstat-no" title="statement not covered" >if (headers["x-forwarded-proto"]) {</span> <span class="cstat-no" title="statement not covered" > protocol = ensureTrailingColon(headers["x-forwarded-proto"].split(",")[0]);</span> } else { <span class="cstat-no" title="statement not covered" > protocol = "http:";</span> } &nbsp; <span class="cstat-no" title="statement not covered" > let host;</span> <span class="cstat-no" title="statement not covered" > if (headers["x-forwarded-host"]) {</span> <span class="cstat-no" title="statement not covered" > const hosts = headers["x-forwarded-host"].split(/,\s?/);</span> <span class="cstat-no" title="statement not covered" > host = hosts[hosts.length - 1];</span> } else <span class="cstat-no" title="statement not covered" >if (headers.host) {</span> <span class="cstat-no" title="statement not covered" > host = headers.host;</span> } else <span class="cstat-no" title="statement not covered" >if (process.env.SERVER_NAME) {</span> <span class="cstat-no" title="statement not covered" > host = process.env.SERVER_NAME;</span> } &nbsp; <span class="cstat-no" title="statement not covered" > const hostParts = host.split(":", 2);</span> <span class="cstat-no" title="statement not covered" > const hostname = hostParts[0];</span> <span class="cstat-no" title="statement not covered" > let port = hostParts[1] || headers["x-forwarded-port"];</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (R.isNil(port)) {</span> <span class="cstat-no" title="statement not covered" > if (headers["x-forwarded-host"]) {</span> <span class="cstat-no" title="statement not covered" > port = STANDARD_PORTS[protocol];</span> } else <span class="cstat-no" title="statement not covered" >if (headers["x-forwarded-proto"]) {</span> <span class="cstat-no" title="statement not covered" > port = STANDARD_PORTS[headers["x-forwarded-proto"].split(",")[0]];</span> } } &nbsp; <span class="cstat-no" title="statement not covered" > const path = nodeRequest.url;</span> &nbsp; <span class="cstat-no" title="statement not covered" > return new Location({</span> protocol, hostname, port, path }); } &nbsp; /** * Creates a mach.Connection from the given node.js HTTP request and * server (optional) objects. This is a low-level method that is not * generally needed by application-level code. */ <span class="fstat-no" title="function not covered" >function createConnection(nodeRequest) {</span> <span class="cstat-no" title="statement not covered" > const conn = new Connection({</span> version: nodeRequest.httpVersion, method: nodeRequest.method, location: createLocation(nodeRequest), headers: nodeRequest.headers, content: nodeRequest, remoteHost: nodeRequest.connection.remoteAddress, remotePort: nodeRequest.connection.remotePort }); &nbsp; <span class="cstat-no" title="statement not covered" > nodeRequest.on("close", <span class="fstat-no" title="function not covered" >function () {</span></span> <span class="cstat-no" title="statement not covered" > conn.onClose();</span> }); &nbsp; <span class="cstat-no" title="statement not covered" > return conn;</span> } &nbsp; module.exports = createConnection; &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Jul 06 2016 20:37:18 GMT-0500 (CDT) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>