diff --git a/index.html b/index.html
index bb05485..f441400 100644
--- a/index.html
+++ b/index.html
@@ -407,6 +407,10 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
Version
+ CDNJS: |
+  |
+ https://img.shields.io/cdnjs/v/jquery.svg |
+
npm: |
 |
https://img.shields.io/npm/v/npm.svg |
diff --git a/server.js b/server.js
index 33c9d10..f8678ab 100644
--- a/server.js
+++ b/server.js
@@ -1408,6 +1408,32 @@ cache(function(data, match, sendBadge, request) {
});
}));
+// CDNJS version integration
+camp.route(/^\/cdnjs\/v\/(.*)\.(svg|png|gif|jpg|json)$/,
+cache(function(data, match, sendBadge, request) {
+ var library = encodeURIComponent(match[1]); // eg, "express" or "@user/express"
+ var format = match[2];
+ var apiUrl = 'https://api.cdnjs.com/libraries/' + library + '?fields=version';
+ var badgeData = getBadgeData('cdnjs', data);
+ request(apiUrl, function(err, res, buffer) {
+ if (err != null) {
+ badgeData.text[1] = 'inaccessible';
+ sendBadge(format, badgeData);
+ return;
+ }
+ try {
+ var version = JSON.parse(buffer).version || 0;
+ var vdata = versionColor(version);
+ badgeData.text[1] = vdata.version;
+ badgeData.colorscheme = vdata.color;
+ sendBadge(format, badgeData);
+ } catch(e) {
+ badgeData.text[1] = 'not found';
+ sendBadge(format, badgeData);
+ }
+ });
+}));
+
// npm download integration.
camp.route(/^\/npm\/dm\/(.*)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
diff --git a/try.html b/try.html
index 4fea415..54c2397 100644
--- a/try.html
+++ b/try.html
@@ -406,6 +406,10 @@ Pixel-perfect Retina-ready Fast Consistent Hackable
---|
Version
+ CDNJS: |
+  |
+ https://img.shields.io/cdnjs/v/jquery.svg |
+
npm: |
 |
https://img.shields.io/npm/v/npm.svg |
---|