Sha256: 10b5abdf1337eaf6690f275c8f0b405e3736b619f12a52a0f3a7ff9c914775bf

Contents?: true

Size: 1.57 KB

Versions: 28

Compression:

Stored size: 1.57 KB

Contents

/*!
 * Connect - favicon
 * Copyright(c) 2010 Sencha Inc.
 * Copyright(c) 2011 TJ Holowaychuk
 * MIT Licensed
 */

/**
 * Module dependencies.
 */

var fs = require('fs')
  , utils = require('../utils');

/**
 * Favicon cache.
 */

var icon;

/**
 * By default serves the connect favicon, or the favicon
 * located by the given `path`.
 *
 * Options:
 *
 *   - `maxAge`  cache-control max-age directive, defaulting to 1 day
 *
 * Examples:
 *
 *     connect.createServer(
 *       connect.favicon()    
 *     );
 *
 *     connect.createServer(
 *       connect.favicon(__dirname + '/public/favicon.ico')    
 *     );
 *
 * @param {String} path
 * @param {Object} options
 * @return {Function}
 * @api public
 */

module.exports = function favicon(path, options){
  var options = options || {}
    , path = path || __dirname + '/../public/favicon.ico'
    , maxAge = options.maxAge || 86400000;

  return function favicon(req, res, next){
    if ('/favicon.ico' == req.url) {
      if (icon) {
        res.writeHead(200, icon.headers);
        res.end(icon.body);
      } else {
        fs.readFile(path, function(err, buf){
          if (err) return next(err);
          icon = {
            headers: {
                'Content-Type': 'image/x-icon'
              , 'Content-Length': buf.length
              , 'ETag': '"' + utils.md5(buf) + '"'
              , 'Cache-Control': 'public, max-age=' + (maxAge / 1000)
            },
            body: buf
          };
          res.writeHead(200, icon.headers);
          res.end(icon.body);
        });
      }
    } else {
      next();
    }
  };
};

Version data entries

28 entries across 28 versions & 3 rubygems

Version Path
blackboard-3.1.9 lib/site_template/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.8.2 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.8.1 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.8.0 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.7.2 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.7.1 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.7.0 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.6.1 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.6.0 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.5.0 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.4.0 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.3.0 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.2.5 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.2.4 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.2.3 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.2.2 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.2.1 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.2.0 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.1.6 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js
vulcan-0.1.5 server/node_modules/express/node_modules/connect/lib/middleware/favicon.js