diff --git a/app.js b/app.js index 3885808..fd6da09 100644 --- a/app.js +++ b/app.js @@ -1,4 +1,5 @@ var express = require('express'); +var Promise = require('bluebird'); var config = require( __dirname + '/./config' ); var utils = require( __dirname + '/./utils'); @@ -37,22 +38,21 @@ app.get( '/:package', function( req, res, next ){ return fileExists( cacheFile ) .tap( function( isExists ){ if( !isExists ){ - if ( ENABLE_NPM_FAILOVER ) { - res._log.cacheHit = '---'; - return fetchAndCacheMetadata( packageName, cacheFile ); - } else { - return res.status( 404 ).json( {} ); + if ( !ENABLE_NPM_FAILOVER ) { + return Promise.reject( { status:404, message: 'Package not found' }); } + res._log.cacheHit = '---'; + return fetchAndCacheMetadata( packageName, cacheFile ); } }) .then( function( ){ res._log.cacheFile = cacheFile; return readFile( cacheFile, 'utf-8' ); }) - .then( function( cacheData ){ - cacheData = JSON.parse( cacheData ); - patchData( cacheData ); - return res.send( cacheData ); + .then( function( cachedData ){ + cachedData = JSON.parse( cachedData ); + patchData( cachedData ); + return res.send( cachedData ); }) .catch( next ); }); @@ -65,15 +65,14 @@ app.get( '/:package/-/:tarball', function( req, res, next ){ fileExists( packagePath ) .tap( function( isExists ){ if( !isExists ){ - if ( ENABLE_NPM_FAILOVER ) { - res._log.cacheHit = '---'; - return fetchAndCacheTarball( packageName, version, packagePath ); - } else { - return res.status( 404 ).json( {} ); + if ( !ENABLE_NPM_FAILOVER ) { + return Promise.reject( { status: 404, message: '' }); } + res._log.cacheHit = '---'; + return fetchAndCacheTarball( packageName, version, packagePath ); } }) - .then( function(){ + .then( function( ){ res._log.cacheFile = packagePath; return res.sendFile( packagePath ); }) @@ -93,10 +92,7 @@ app.use(function(req, res, next) { app.use(function(err, req, res, next) { console.log( err.stack ); res.status(err.status || 500); - res.send({ - message: err.message, - error: err - }); + res.send( err.message || err ); if( next ) { next(); } });