Add [dotnetstatus] integration (#1028)

This commit is contained in:
Jared Nance
2017-10-12 21:55:42 -05:00
committed by Paul Melnikow
parent 7945db8f57
commit 25115ae738
3 changed files with 80 additions and 0 deletions

View File

@@ -2796,6 +2796,52 @@ cache(function(data, match, sendBadge, request) {
});
}));
// dotnet-status integration.
camp.route(/^\/dotnetstatus\/(.+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var projectUri = match[1]; // gh/{USER}/{REPO}/{PROJECT}
var format = match[2];
var url = 'http://dotnet-status.com/api/status/' + projectUri + '/';
var badgeData = getBadgeData('dependencies', data);
var sendErrorBadge = function() {
badgeData.text[1] = 'inconclusive';
sendBadge(format, badgeData);
};
request(url, function (err, res, buffer) {
if (err != null || res.statusCode === 404) {
sendErrorBadge();
return;
}
if (res.statusCode === 202) {
badgeData.text[1] = 'processing';
sendBadge(format, badgeData);
return;
}
try {
var data = JSON.parse(buffer);
if(data.projectResults.length === 1 && data.projectResults[0] !== null) {
if (data.projectResults[0].outOfDate) {
badgeData.text[1] = 'out of date';
badgeData.colorscheme = 'red';
} else {
badgeData.text[1] = 'up to date';
badgeData.colorscheme = 'blue';
}
}
else {
badgeData.text[1] = 'project not found';
}
sendBadge(format, badgeData);
}
catch (e) {
sendErrorBadge();
}
});
}));
// Gemnasium integration
camp.route(/^\/gemnasium\/(.+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {

View File

@@ -0,0 +1,30 @@
"use strict";
const Joi = require("joi");
const ServiceTester = require("./runner/service-tester");
const t = new ServiceTester({
id: "dotnetstatus",
title: "dotnet-status"
});
module.exports = t;
t
.create("get nuget package status")
.get("/gh/jaredcnance/dotnet-status/API.json")
.expectJSONTypes(
Joi.object().keys({
name: Joi.equal("dependencies"),
value: Joi.equal("up to date", "out of date", "processing")
})
);
t
.create("get nuget package status")
.get("/gh/jaredcnance/dotnet-status/invalid-project.json")
.expectJSON({ name: "dependencies", value: "project not found" });
t
.create("get nuget package status error")
.get("/not-a-valid-uri.json")
.expectJSON({ name: "dependencies", value: "inconclusive" });

View File

@@ -1208,6 +1208,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable
<td><img src='/david/peer/webcomponents/generator-element.svg' alt=''/></td>
<td><code>https://img.shields.io/david/peer/webcomponents/generator-element.svg</code></td>
</tr>
<tr><th>.Net Status (GitHub):</th>
<td><img src='/dotnetstatus/gh/jaredcnance/dotnet-status/API.svg' alt='' /></td>
<td><code>https://img.shields.io/dotnetstatus/gh/jaredcnance/dotnet-status/API.svg</code></td>
</tr>
<tr><th> bitHound: </th>
<td><img src='/bithound/dependencies/github/rexxars/sse-channel.svg' alt=''/></td>
<td><code>https://img.shields.io/bithound/dependencies/github/rexxars/sse-channel.svg</code></td>