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:
63
services/travis/travis-build.service.js
Normal file
63
services/travis/travis-build.service.js
Normal 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)
|
||||
}
|
||||
})
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
85
services/travis/travis-php-version.service.js
Normal file
85
services/travis/travis-php-version.service.js
Normal 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)
|
||||
})
|
||||
})
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user