diff --git a/index.html b/index.html
index ebc80b0..3e0552a 100644
--- a/index.html
+++ b/index.html
@@ -107,6 +107,10 @@ I made the GitHub Badge Service.
 |
http://img.shields.io/gemnasium/mathiasbynens/he.svg |
+ David: |
+  |
+ http://img.shields.io/david/visionmedia/express.svg |
+
Packagist: |
 |
http://img.shields.io/packagist/l/doctrine/orm.svg |
diff --git a/server.js b/server.js
index f1dfb7e..123b81b 100644
--- a/server.js
+++ b/server.js
@@ -798,6 +798,41 @@ cache(function(data, match, sendBadge) {
});
}));
+// David integration
+camp.route(/^\/david\/(.+)\.(svg|png|gif|jpg)$/,
+cache(function(data, match, sendBadge) {
+ var userRepo = match[1]; // eg, `jekyll/jekyll`.
+ var format = match[2];
+ var options = 'https://david-dm.org/' + userRepo + '/info.json';
+ var badgeData = getBadgeData('dependencies', data);
+ request(options, function(err, res, buffer) {
+ if (err != null) {
+ badgeData.text[1] = 'inaccessible';
+ sendBadge(format, badgeData);
+ }
+ try {
+ var data = JSON.parse(buffer);
+ var status = data.status;
+ if (status === 'notsouptodate') {
+ badgeData.colorscheme = 'yellow';
+ status = 'up-to-date';
+ } else if (status === 'outofdate') {
+ badgeData.colorscheme = 'red';
+ status = 'out-of-date';
+ } else if (status === 'uptodate') {
+ badgeData.colorscheme = 'brightgreen';
+ status = 'up-to-date';
+ }
+ badgeData.text[1] = status;
+ sendBadge(format, badgeData);
+ } catch(e) {
+ badgeData.text[1] = 'invalid';
+ sendBadge(format, badgeData);
+ return;
+ }
+ });
+}));
+
// Gemnasium integration
camp.route(/^\/gemnasium\/(.+)\.(svg|png|gif|jpg)$/,
cache(function(data, match, sendBadge) {
diff --git a/try.html b/try.html
index 477156a..71be0cd 100644
--- a/try.html
+++ b/try.html
@@ -107,6 +107,10 @@ I made the GitHub Badge Service.
 |
http://img.shields.io/gemnasium/mathiasbynens/he.svg |
+ David: |
+  |
+ http://img.shields.io/david/visionmedia/express.svg |
+
Packagist: |
 |
http://img.shields.io/packagist/l/doctrine/orm.svg |
---|