Move legacy services from server.js into services/ (#1958)

This builds on the work of #1931 by moving the legacy services into `services/`.
This commit is contained in:
Paul Melnikow
2018-08-27 13:29:54 -04:00
committed by GitHub
parent f3037c5e15
commit bedba47d77
151 changed files with 9074 additions and 6813 deletions

View File

@@ -0,0 +1,63 @@
'use strict'
const LegacyService = require('../legacy-service')
const { makeBadgeData: getBadgeData } = require('../../lib/badge-data')
const { checkErrorResponse } = require('../../lib/error-helper')
const log = require('../../lib/log')
// Handle .org and .com.
module.exports = class TravisBuild extends LegacyService {
static registerLegacyRouteHandler({ camp, cache }) {
camp.route(
/^\/travis(-ci)?\/(?:(com)\/)?(?!php-v)([^/]+\/[^/]+)(?:\/(.+))?\.(svg|png|gif|jpg|json)$/,
cache((data, match, sendBadge, request) => {
const travisDomain = match[2] || 'org' // (com | org) org by default
const userRepo = match[3] // eg, espadrine/sc
const branch = match[4]
const format = match[5]
const options = {
method: 'HEAD',
uri: `https://api.travis-ci.${travisDomain}/${userRepo}.svg`,
}
if (branch != null) {
options.uri += `?branch=${branch}`
}
const badgeData = getBadgeData('build', data)
request(options, (err, res) => {
if (err != null) {
log.error(
'Travis error: data:' +
JSON.stringify(data) +
'\nStack: ' +
err.stack
)
if (res) {
log.error('' + res)
}
}
if (checkErrorResponse(badgeData, err, res)) {
sendBadge(format, badgeData)
return
}
try {
const state = res.headers['content-disposition'].match(
/filename="(.+)\.svg"/
)[1]
badgeData.text[1] = state
if (state === 'passing') {
badgeData.colorscheme = 'brightgreen'
} else if (state === 'failing') {
badgeData.colorscheme = 'red'
} else {
badgeData.text[1] = state
}
sendBadge(format, badgeData)
} catch (e) {
badgeData.text[1] = 'invalid'
sendBadge(format, badgeData)
}
})
})
)
}
}

View File

@@ -0,0 +1,85 @@
'use strict'
const LegacyService = require('../legacy-service')
const { makeBadgeData: getBadgeData } = require('../../lib/badge-data')
const log = require('../../lib/log')
const {
minorVersion: phpMinorVersion,
versionReduction: phpVersionReduction,
getPhpReleases,
} = require('../../lib/php-version')
module.exports = class TravisPhpVersion extends LegacyService {
static registerLegacyRouteHandler({ camp, cache, githubApiProvider }) {
camp.route(
/^\/travis(?:-ci)?\/php-v\/([^/]+\/[^/]+)(?:\/([^/]+))?\.(svg|png|gif|jpg|json)$/,
cache((data, match, sendBadge, request) => {
const userRepo = match[1] // eg, espadrine/sc
const version = match[2] || 'master'
const format = match[3]
const options = {
method: 'GET',
uri: `https://api.travis-ci.org/repos/${userRepo}/branches/${version}`,
}
const badgeData = getBadgeData('PHP', data)
getPhpReleases(githubApiProvider, (err, phpReleases) => {
if (err != null) {
badgeData.text[1] = 'invalid'
sendBadge(format, badgeData)
return
}
request(options, (err, res, buffer) => {
if (err !== null) {
log.error(`Travis CI error: ${err.stack}`)
if (res) {
log.error('' + res)
}
badgeData.text[1] = 'invalid'
sendBadge(format, badgeData)
return
}
try {
const data = JSON.parse(buffer)
let travisVersions = []
// from php
if (typeof data.branch.config.php !== 'undefined') {
travisVersions = travisVersions.concat(
data.branch.config.php.map(v => v.toString())
)
}
// from matrix
if (typeof data.branch.config.matrix.include !== 'undefined') {
travisVersions = travisVersions.concat(
data.branch.config.matrix.include.map(v => v.php.toString())
)
}
const hasHhvm = travisVersions.find(v => v.startsWith('hhvm'))
const versions = travisVersions
.map(v => phpMinorVersion(v))
.filter(v => v.indexOf('.') !== -1)
let reduction = phpVersionReduction(versions, phpReleases)
if (hasHhvm) {
reduction += reduction ? ', ' : ''
reduction += 'HHVM'
}
if (reduction) {
badgeData.colorscheme = 'blue'
badgeData.text[1] = reduction
} else {
badgeData.text[1] = 'invalid'
}
} catch (e) {
badgeData.text[1] = 'invalid'
}
sendBadge(format, badgeData)
})
})
})
)
}
}