Add [dotnetstatus] integration (#1028)
This commit is contained in:
committed by
Paul Melnikow
parent
7945db8f57
commit
25115ae738
46
server.js
46
server.js
@@ -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) {
|
||||
|
||||
30
service-tests/dotnetstatus.js
Normal file
30
service-tests/dotnetstatus.js
Normal 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" });
|
||||
4
try.html
4
try.html
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user