Add Depfu dependencies badge (#1537)

This commit is contained in:
Florian Munz
2018-03-08 20:42:25 +01:00
committed by Paul Melnikow
parent 8fde79b793
commit 54afdc189c
3 changed files with 55 additions and 0 deletions

View File

@@ -1263,6 +1263,10 @@ const allBadgeExamples = [
title: 'bitHound',
previewUri: '/bithound/code/github/rexxars/sse-channel.svg'
},
{
title: 'Depfu',
previewUri: '/depfu/depfu/example-ruby.svg'
},
{
title: 'Hackage-Deps',
previewUri: '/hackage-deps/v/lens.svg'

View File

@@ -3038,6 +3038,31 @@ cache(function(data, match, sendBadge, request) {
});
}));
// Depfu integration
camp.route(/^\/depfu\/(.+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var userRepo = match[1]; // eg, `jekyll/jekyll`.
var format = match[2];
var url = 'https://depfu.com/github/shields/' + userRepo;
var badgeData = getBadgeData('dependencies', data);
request(url, function(err, res) {
if (err != null) {
badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData);
return;
}
try {
var data = JSON.parse(res['body']);
badgeData.text[1] = data['text'];
badgeData.colorscheme = data['colorscheme'];
sendBadge(format, badgeData);
} catch(e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
});
}));
// VersionEye integration
camp.route(/^\/versioneye\/d\/(.+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {

26
service-tests/depfu.js Normal file
View File

@@ -0,0 +1,26 @@
'use strict';
const Joi = require('joi');
const ServiceTester = require('./runner/service-tester');
const isDependencyStatus = Joi.string().valid('insecure', 'latest', 'recent', 'stale');
const t = new ServiceTester({ id: 'depfu', title: 'Depfu' });
module.exports = t;
t.create('depfu dependencies (valid)')
.get('/depfu/example-ruby.json')
.expectJSONTypes(Joi.object().keys({
name: 'dependencies',
value: isDependencyStatus
}));
t.create('depfu dependencies (repo not found)')
.get('/pyvesb/emptyrepo.json')
.expectJSON({name: 'dependencies', value: 'invalid'});
t.create('depfu dependencies (connection error)')
.get('/depfu/example-ruby.json')
.networkOff()
.expectJSON({name: 'dependencies', value: 'inaccessible'});