From 7153ed0bd1582bbfafc9ec720141121659a9534b Mon Sep 17 00:00:00 2001 From: Pyves Date: Sat, 1 Sep 2018 20:53:52 +0100 Subject: [PATCH] Deprecate [issuestats] service (#2038) --- lib/all-badge-examples.js | 16 ----- lib/deprecated-services.js | 1 + services/issuestats/issuestats.service.js | 82 +++-------------------- services/issuestats/issuestats.tester.js | 20 ++++++ 4 files changed, 29 insertions(+), 90 deletions(-) create mode 100644 services/issuestats/issuestats.tester.js diff --git a/lib/all-badge-examples.js b/lib/all-badge-examples.js index d977990687..f03caf348a 100644 --- a/lib/all-badge-examples.js +++ b/lib/all-badge-examples.js @@ -966,22 +966,6 @@ const allBadgeExamples = [ previewUrl: '/waffle/label/evancohen/smart-mirror/status%3A%20in%20progress.svg', }, - { - title: 'Issue Stats', - previewUrl: '/issuestats/i/github/expressjs/express.svg', - }, - { - title: 'Issue Stats (long form)', - previewUrl: '/issuestats/i/long/github/expressjs/express.svg', - }, - { - title: 'Pull Request Stats', - previewUrl: '/issuestats/p/github/expressjs/express.svg', - }, - { - title: 'Pull Request Stats (long form)', - previewUrl: '/issuestats/p/long/github/expressjs/express.svg', - }, ], }, { diff --git a/lib/deprecated-services.js b/lib/deprecated-services.js index 181c7376ba..8d8f23e96b 100644 --- a/lib/deprecated-services.js +++ b/lib/deprecated-services.js @@ -11,6 +11,7 @@ const deprecatedServices = { magnumci: new Date('2018-07-08'), bithound: new Date('2018-07-08'), versioneye: new Date('2018-08-20'), + issuestats: new Date('2018-09-01'), } module.exports = { diff --git a/services/issuestats/issuestats.service.js b/services/issuestats/issuestats.service.js index 298795b2d8..4f7a1432e7 100644 --- a/services/issuestats/issuestats.service.js +++ b/services/issuestats/issuestats.service.js @@ -1,77 +1,11 @@ 'use strict' -const LegacyService = require('../legacy-service') -const { - makeBadgeData: getBadgeData, - makeLabel: getLabel, -} = require('../../lib/badge-data') +const deprecatedService = require('../deprecated-service') -module.exports = class IssueStats extends LegacyService { - static registerLegacyRouteHandler({ camp, cache }) { - camp.route( - /^\/issuestats\/([^/]+)(\/long)?\/([^/]+)\/(.+)\.(svg|png|gif|jpg|json)$/, - cache((data, match, sendBadge, request) => { - const type = match[1] // e.g. `i` for Issue or `p` for PR - const longForm = !!match[2] - const host = match[3] // e.g. `github` - const userRepo = match[4] // e.g. `ruby/rails` - const format = match[5] - - const badgeData = getBadgeData('Issue Stats', data) - - // Maps type name from URL to JSON property name prefix for badge data - const typeToPropPrefix = { - i: 'issue', - p: 'pr', - } - const typePropPrefix = typeToPropPrefix[type] - if (typePropPrefix === undefined) { - badgeData.text[1] = 'invalid' - sendBadge(format, badgeData) - return - } - - const url = 'http://issuestats.com/' + host + '/' + userRepo - const qs = { format: 'json' } - if (!longForm) { - qs.concise = true - } - const options = { - method: 'GET', - url: url, - qs: qs, - gzip: true, - json: true, - } - request(options, (err, res, json) => { - if (err != null || res.statusCode >= 500) { - badgeData.text[1] = 'invalid' - sendBadge(format, badgeData) - return - } - - if (res.statusCode >= 400 || !json || typeof json !== 'object') { - badgeData.text[1] = 'not found' - sendBadge(format, badgeData) - return - } - - try { - const label = json[typePropPrefix + '_badge_preamble'] - const value = json[typePropPrefix + '_badge_words'] - const color = json[typePropPrefix + '_badge_color'] - - if (label != null) badgeData.text[0] = getLabel(label, data) - badgeData.text[1] = value || 'invalid' - if (color != null) badgeData.colorscheme = color - - sendBadge(format, badgeData) - } catch (e) { - badgeData.text[1] = 'invalid' - sendBadge(format, badgeData) - } - }) - }) - ) - } -} +module.exports = deprecatedService({ + url: { + base: 'issuestats', + format: '(?:[^/]+)(?:/long)?/(?:[^/]+)/(?:.+)', + }, + label: 'issue stats', +}) diff --git a/services/issuestats/issuestats.tester.js b/services/issuestats/issuestats.tester.js new file mode 100644 index 0000000000..4d34fb5565 --- /dev/null +++ b/services/issuestats/issuestats.tester.js @@ -0,0 +1,20 @@ +'use strict' + +const ServiceTester = require('../service-tester') + +const t = new ServiceTester({ id: 'issuestats', title: 'Issue Stats' }) +module.exports = t + +t.create('no longer available (previously issue analysis)') + .get('/i/github/expressjs/express.json') + .expectJSON({ + name: 'issue stats', + value: 'no longer available', + }) + +t.create('no longer available (previously pull request analysis, long form)') + .get('/p/long/github/expressjs/express.json') + .expectJSON({ + name: 'issue stats', + value: 'no longer available', + })