From 696354e98c32adee9d6b72858ab5049b0b652f00 Mon Sep 17 00:00:00 2001 From: nitram509 Date: Thu, 4 Sep 2014 01:45:44 +0200 Subject: [PATCH] added support for Maven Central - The Central (Java) Repository for open source components API documentation http://search.maven.org/#api --- server.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/server.js b/server.js index f3c2b49..bc9132d 100644 --- a/server.js +++ b/server.js @@ -1662,6 +1662,38 @@ cache(function(data, match, sendBadge) { }); })); +// Maven-Central artifact version integration +// API documentation: http://search.maven.org/#api +camp.route(/^\/maven-central\/v\/(.*)\/(.*)\.(svg|png|gif|jpg)$/, +cache(function(data, match, sendBadge) { + var groupId = match[1]; // eg, `com.google.inject` + var artifactId = match[2]; // eg, `guice` + var format = match[3] || "gif"; // eg, `guice` + var query = "g:" + encodeURIComponent(groupId) + "+AND+a:" + encodeURIComponent(artifactId); + var apiUrl = 'https://search.maven.org/solrsearch/select?rows=1&q='+query; + var badgeData = getBadgeData('maven-central', data); + request(apiUrl, { headers: { 'Accept': 'application/json' } }, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + } + try { + var data = JSON.parse(buffer); + var version = data.response.docs[0].latestVersion; + badgeData.text[1] = 'v' + version; + if (version === '0' || /SNAPSHOT/.test(version)) { + badgeData.colorscheme = 'orange'; + } else { + badgeData.colorscheme = 'blue'; + } + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); +})); + // Any badge. camp.route(/^\/(:|badge\/)(([^-]|--)+)-(([^-]|--)+)-(([^-]|--)+)\.(svg|png|gif|jpg)$/, function(data, match, end, ask) {