Better errors
This commit is contained in:
parent
61ed56d4f8
commit
d48824ab49
4 changed files with 65 additions and 19 deletions
4
app.js
4
app.js
|
@ -85,6 +85,7 @@ if (app.get('env') === 'development') {
|
||||||
app.use(function(err, req, res, next) {
|
app.use(function(err, req, res, next) {
|
||||||
res.status(err.status || 500);
|
res.status(err.status || 500);
|
||||||
res.render('error', {
|
res.render('error', {
|
||||||
|
page: "error",
|
||||||
message: err.message,
|
message: err.message,
|
||||||
error: err
|
error: err
|
||||||
});
|
});
|
||||||
|
@ -96,8 +97,9 @@ if (app.get('env') === 'development') {
|
||||||
app.use(function(err, req, res, next) {
|
app.use(function(err, req, res, next) {
|
||||||
res.status(err.status || 500);
|
res.status(err.status || 500);
|
||||||
res.render('error', {
|
res.render('error', {
|
||||||
|
page: "error",
|
||||||
message: err.message,
|
message: err.message,
|
||||||
error: {}
|
error: {status: err.status || 500}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -128,3 +128,18 @@ h3 {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.error h1, .error h2 {
|
||||||
|
font-weight: 300;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error .main h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error h2 {
|
||||||
|
font-size: 4em;
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
|
@ -15,18 +15,23 @@ require("fs").readdirSync(path.join(__dirname, "..", "lib", "services")).forEach
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
module.exports = function(req, res) {
|
module.exports = function(req, res, next) {
|
||||||
var serviceId = req.params.service;
|
var serviceId = req.params.service;
|
||||||
var type = req.params.type;
|
var type = req.params.type;
|
||||||
var itemId = req.params.id;
|
var itemId = req.params.id;
|
||||||
var promises = [];
|
var promises = [];
|
||||||
|
|
||||||
req.db.matches.findOne({item_id:serviceId + itemId}).then(function(doc) {
|
if (!services[serviceId] || (type != "album" && type != "track")) {
|
||||||
|
next();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
req.db.matches.findOne({_id:serviceId + itemId}).then(function(doc) {
|
||||||
if (doc) {
|
if (doc) {
|
||||||
res.render(type, {page: type, items: doc.items});
|
res.render(type, {page: type, items: doc.items});
|
||||||
} else {
|
} else {
|
||||||
services[serviceId].lookupId(itemId, type).then(function(item) {
|
Q.timeout(services[serviceId].lookupId(itemId, type), 5000).then(function(item) {
|
||||||
|
|
||||||
for (var id in services) {
|
for (var id in services) {
|
||||||
if (id != serviceId) {
|
if (id != serviceId) {
|
||||||
promises.push(Q.timeout(services[id].search(item), 5000));
|
promises.push(Q.timeout(services[id].search(item), 5000));
|
||||||
|
@ -51,10 +56,17 @@ module.exports = function(req, res) {
|
||||||
});
|
});
|
||||||
|
|
||||||
items.unshift(item);
|
items.unshift(item);
|
||||||
req.db.matches.save({item_id:serviceId + itemId, items:items});
|
req.db.matches.save({_id:serviceId + itemId, items:items});
|
||||||
cache[serviceId][type + "-" + itemId] = items;
|
cache[serviceId][type + "-" + itemId] = items;
|
||||||
res.render(type, {page: type, items: items});
|
res.render(type, {page: type, items: items});
|
||||||
});
|
});
|
||||||
|
}, function(err) {
|
||||||
|
var error = new Error("An unexpected error happenend")
|
||||||
|
if (err.code == "ETIMEDOUT") {
|
||||||
|
error = new Error("Error talking to music service");
|
||||||
|
error.status = "502";
|
||||||
|
}
|
||||||
|
next(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
<h1><%= message %></h1>
|
<% include header.ejs %>
|
||||||
<h2><%= error.status %></h2>
|
<header>
|
||||||
<pre><%= error.stack %></pre>
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<h1><a href="/">match<span class="audio-lighten">.audio</span></a></h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div class="container main">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 col-md-offset-3">
|
||||||
|
<h2><%= error.status %></h2>
|
||||||
|
<h1><%= message %></h1>
|
||||||
|
<% if (error.stack) { %><pre><%= error.stack %></pre><% } %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% include footer.ejs %>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue