UNPKG

blackbird-server

Version:
336 lines (335 loc) 10.1 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for modules/headers/AcceptEncoding.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/headers/</a> AcceptEncoding.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">90.63% </span> <span class="quiet">Statements</span> <span class='fraction'>29/32</span> </div> <div class='fl pad1y space-right2'> <span class="strong">83.33% </span> <span class="quiet">Branches</span> <span class='fraction'>15/18</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>7/7</span> </div> <div class='fl pad1y space-right2'> <span class="strong">90.63% </span> <span class="quiet">Lines</span> <span class='fraction'>29/32</span> </div> </div> </div> <div class='status-line high'></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</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-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-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&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-yes"></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-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">15×</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-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">15×</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">13×</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">22×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">22×</span> <span class="cline-any cline-yes">22×</span> <span class="cline-any cline-yes">21×</span> <span class="cline-any cline-yes">12×</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-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">22×</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-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">16×</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-yes">10×</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></td><td class="text"><pre class="prettyprint lang-js">const parseMediaValue = require("../utils/parseMediaValue"); const parseMediaValues = require("../utils/parseMediaValues"); const qualityFactorForMediaValue = require("../utils/qualityFactorForMediaValue"); const stringifyMediaValues = require("../utils/stringifyMediaValues"); const Header = require("../Header"); const R = require("ramda"); &nbsp; function byHighestPrecedence(a, b) { // "*" gets least precedence, all others are equal let precedence; <span class="missing-if-branch" title="if path not taken" >I</span>if (a === "*") { <span class="cstat-no" title="statement not covered" > precedence = -1;</span> } else <span class="missing-if-branch" title="if path not taken" >I</span>if (b === "*") { <span class="cstat-no" title="statement not covered" > precedence = 1;</span> } else { precedence = 0; } return precedence; } &nbsp; /** * Represents an HTTP Accept-Encoding header and provides several methods * for determining acceptable content encodings. * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 */ class AcceptEncoding extends Header { &nbsp; constructor(value) { super("Accept-Encoding", value); } &nbsp; /** * Returns the value of this header as a string. */ get value() { return stringifyMediaValues(this._mediaValues) || ""; } &nbsp; set value(value) { this._mediaValues = value ? parseMediaValues(value) : []; } &nbsp; /** * Returns true if the given encoding is acceptable. */ accepts(encoding) { return this.qualityFactorForEncoding(encoding) !== 0; } &nbsp; /** * Returns the quality factor for the given encoding. */ qualityFactorForEncoding(encoding) { const values = this._mediaValues; &nbsp; const givenValue = parseMediaValue(encoding); const matchingValues = values.filter(function (value) { if (value.type === "*") { return true; } &nbsp; return value.type === givenValue.type; }).sort(byHighestPrecedence); &nbsp; // From RFC 2616: // The "identity" content-coding is always acceptable, unless // specifically refused because the Accept-Encoding field includes // "identity;q=0", or because the field includes "*;q=0" and does // not explicitly include the "identity" content-coding. If the // Accept-Encoding field-value is empty, then only the "identity" // encoding is acceptable. if (givenValue.type === "identity") { <span class="missing-if-branch" title="if path not taken" >I</span>if (matchingValues.length &amp;&amp; matchingValues[0].type === "identity") { <span class="cstat-no" title="statement not covered" > return qualityFactorForMediaValue(matchingValues[0]);</span> } &nbsp; return 1; } &nbsp; if (R.isEmpty(matchingValues)) { return 0; } &nbsp; return qualityFactorForMediaValue(matchingValues[0]); } &nbsp; } &nbsp; module.exports = AcceptEncoding; &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>