UNPKG

blackbird-server

Version:
273 lines (272 loc) 8.55 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for modules/middleware/methodOverride.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/middleware/</a> methodOverride.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">95.45% </span> <span class="quiet">Statements</span> <span class='fraction'>21/22</span> </div> <div class='fl pad1y space-right2'> <span class="strong">88.89% </span> <span class="quiet">Branches</span> <span class='fraction'>16/18</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>2/2</span> </div> <div class='fl pad1y space-right2'> <span class="strong">95.45% </span> <span class="quiet">Lines</span> <span class='fraction'>21/22</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</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-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-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-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-yes"></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-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-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-yes"></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-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"></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"></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 normalizeHeaderName = require("../utils/normalizeHeaderName"); const {is} = require("ramda"); /** * A middleware that overrides the method of the request to a value that was * given either in a request parameter or a request header. Can be useful when * you need to use HTTP methods other than GET and POST with clients that don't * support them, like web browsers. * * For example, you could use the following HTML form: * * &lt;form method="POST" action="/"&gt; * &lt;input type="hidden" name="_method" value="PUT"&gt; * &lt;/form&gt; * * with an app that uses methodOverride: * * let app = mach.stack(); * app.use(mach.params); * app.use(mach.methodOverride); * app.run(function (request) { * return request.method; // PUT * }); * * Note: When using mach.methodOverride with POST parameters you need to put * mach.params in front of it so that the request parameters will be available. * * Options may be any of the following: * * - paramName The name of the request param that contains the * request method. Defaults to "_method" * - headerName The name of the HTTP header that will contain the * request method. This allows you to put the request * method in an HTTP header instead of a request param. * Defaults to "X-Http-Method-Override" */ function methodOverride(app, options) { options = options || {}; &nbsp; <span class="missing-if-branch" title="if path not taken" >I</span>if (is(String, options)) { <span class="cstat-no" title="statement not covered" > options = {paramName: options};</span> } &nbsp; const paramName = options.paramName || "_method"; const headerName = normalizeHeaderName(options.headerName || "X-Http-Method-Override"); &nbsp; return function (conn) { let method; if (conn.request.headers[headerName]) { method = conn.request.headers[headerName]; } else if (!conn.params) { conn.onError(new Error("No params! Use mach.params in front of mach.methodOverride")); } else <span class="missing-if-branch" title="else path not taken" >E</span>if (conn.params[paramName]) { method = conn.params[paramName]; &nbsp; // If multiple _method parameters were used, use the last one. if (Array.isArray(method)) { method = method[method.length - 1]; } } &nbsp; if (method) { conn.method = method.toUpperCase(); } &nbsp; return conn.call(app); }; } &nbsp; module.exports = methodOverride; &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>