Refactor [requires scrutinizer securityheaders shippable] services (#5643)
* Refactor readthedocs reddit redmine repology services * Refactor requires scrutinizer security-headers shippable services Co-authored-by: Caleb Cartwright <calebcartwright@users.noreply.github.com>
This commit is contained in:
@@ -8,19 +8,14 @@ const statusSchema = Joi.object({
|
||||
}).required()
|
||||
|
||||
module.exports = class RequiresIo extends BaseJsonService {
|
||||
static get category() {
|
||||
return 'dependencies'
|
||||
}
|
||||
static category = 'dependencies'
|
||||
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'requires',
|
||||
pattern: ':service/:user/:repo/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Requires.io',
|
||||
pattern: ':service/:user/:repo',
|
||||
@@ -39,11 +34,8 @@ module.exports = class RequiresIo extends BaseJsonService {
|
||||
staticPreview: this.render({ status: 'up-to-date' }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static get defaultBadgeData() {
|
||||
return { label: 'requirements' }
|
||||
}
|
||||
static defaultBadgeData = { label: 'requirements' }
|
||||
|
||||
static render({ status }) {
|
||||
let message = status
|
||||
|
||||
@@ -19,15 +19,11 @@ const schema = Joi.object({
|
||||
}).required()
|
||||
|
||||
class ScrutinizerBuildBase extends ScrutinizerBase {
|
||||
static get category() {
|
||||
return 'build'
|
||||
}
|
||||
static category = 'build'
|
||||
|
||||
static get defaultBadgeData() {
|
||||
return {
|
||||
static defaultBadgeData = {
|
||||
label: 'build',
|
||||
}
|
||||
}
|
||||
|
||||
async makeBadge({ vcs, slug, branch }) {
|
||||
const json = await this.fetch({ schema, vcs, slug })
|
||||
@@ -39,15 +35,12 @@ class ScrutinizerBuildBase extends ScrutinizerBase {
|
||||
}
|
||||
|
||||
class ScrutinizerBuild extends ScrutinizerBuildBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/build',
|
||||
pattern: ':vcs(g|b)/:user/:repo/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Scrutinizer build (GitHub/Bitbucket)',
|
||||
pattern: ':vcs(g|b)/:user/:repo/:branch?',
|
||||
@@ -60,7 +53,6 @@ class ScrutinizerBuild extends ScrutinizerBuildBase {
|
||||
staticPreview: renderBuildStatusBadge({ status: 'passing' }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ vcs, user, repo, branch }) {
|
||||
return this.makeBadge({
|
||||
@@ -72,19 +64,16 @@ class ScrutinizerBuild extends ScrutinizerBuildBase {
|
||||
}
|
||||
|
||||
class ScrutinizerGitLabBuild extends ScrutinizerBuildBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/build/gl',
|
||||
pattern: ':instance/:user/:repo/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
// There are no known anonymous accessible Scrutinizer reports available for GitLab repos.
|
||||
// The example used is valid, but the project will not be accessible if Shields users try to use it.
|
||||
// https://gitlab.propertywindow.nl/propertywindow/client
|
||||
// https://scrutinizer-ci.com/gl/propertywindow/propertywindow/client/badges/quality-score.png?b=master&s=dfae6992a48184cc2333b4c349cec0447f0d67c2
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Scrutinizer build (GitLab)',
|
||||
pattern: ':instance/:user/:repo/:branch?',
|
||||
@@ -97,7 +86,6 @@ class ScrutinizerGitLabBuild extends ScrutinizerBuildBase {
|
||||
staticPreview: renderBuildStatusBadge({ status: 'passing' }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ instance, user, repo, branch }) {
|
||||
return this.makeBadge({
|
||||
@@ -109,12 +97,10 @@ class ScrutinizerGitLabBuild extends ScrutinizerBuildBase {
|
||||
}
|
||||
|
||||
class ScrutinizerPlainGitBuild extends ScrutinizerBuildBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/build/gp',
|
||||
pattern: ':slug/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
async handle({ slug, branch }) {
|
||||
return this.makeBadge({ vcs: 'gp', slug, branch })
|
||||
|
||||
@@ -32,15 +32,11 @@ const schema = Joi.object({
|
||||
const scale = colorScale([40, 61], ['red', 'yellow', 'brightgreen'])
|
||||
|
||||
class ScrutinizerCoverageBase extends ScrutinizerBase {
|
||||
static get category() {
|
||||
return 'coverage'
|
||||
}
|
||||
static category = 'coverage'
|
||||
|
||||
static get defaultBadgeData() {
|
||||
return {
|
||||
static defaultBadgeData = {
|
||||
label: 'coverage',
|
||||
}
|
||||
}
|
||||
|
||||
static render({ coverage }) {
|
||||
return {
|
||||
@@ -71,15 +67,12 @@ class ScrutinizerCoverageBase extends ScrutinizerBase {
|
||||
}
|
||||
|
||||
class ScrutinizerCoverage extends ScrutinizerCoverageBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/coverage',
|
||||
pattern: ':vcs(g|b)/:user/:repo/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Scrutinizer coverage (GitHub/BitBucket)',
|
||||
pattern: ':vcs(g|b)/:user/:repo/:branch?',
|
||||
@@ -92,7 +85,6 @@ class ScrutinizerCoverage extends ScrutinizerCoverageBase {
|
||||
staticPreview: this.render({ coverage: 86 }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ vcs, user, repo, branch }) {
|
||||
return this.makeBadge({
|
||||
@@ -104,19 +96,16 @@ class ScrutinizerCoverage extends ScrutinizerCoverageBase {
|
||||
}
|
||||
|
||||
class ScrutinizerCoverageGitLab extends ScrutinizerCoverageBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/coverage/gl',
|
||||
pattern: ':instance/:user/:repo/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
// There are no known anonymous accessible Scrutinizer reports available for GitLab repos.
|
||||
// The example used is valid, but the project will not be accessible if Shields users try to use it.
|
||||
// https://gitlab.propertywindow.nl/propertywindow/client
|
||||
// https://scrutinizer-ci.com/gl/propertywindow/propertywindow/client/badges/quality-score.png?b=master&s=dfae6992a48184cc2333b4c349cec0447f0d67c2
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Scrutinizer coverage (GitLab)',
|
||||
pattern: ':instance/:user/:repo/:branch?',
|
||||
@@ -129,7 +118,6 @@ class ScrutinizerCoverageGitLab extends ScrutinizerCoverageBase {
|
||||
staticPreview: this.render({ coverage: 94 }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ instance, user, repo, branch }) {
|
||||
return this.makeBadge({
|
||||
@@ -141,12 +129,10 @@ class ScrutinizerCoverageGitLab extends ScrutinizerCoverageBase {
|
||||
}
|
||||
|
||||
class ScrutinizerCoveragePlainGit extends ScrutinizerCoverageBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/coverage/gp',
|
||||
pattern: ':slug/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
async handle({ slug, branch }) {
|
||||
return this.makeBadge({ vcs: 'gp', slug, branch })
|
||||
|
||||
@@ -30,15 +30,11 @@ const scale = colorScale(
|
||||
)
|
||||
|
||||
class ScrutinizerQualityBase extends ScrutinizerBase {
|
||||
static get category() {
|
||||
return 'analysis'
|
||||
}
|
||||
static category = 'analysis'
|
||||
|
||||
static get defaultBadgeData() {
|
||||
return {
|
||||
static defaultBadgeData = {
|
||||
label: 'code quality',
|
||||
}
|
||||
}
|
||||
|
||||
static render({ score }) {
|
||||
return {
|
||||
@@ -59,15 +55,12 @@ class ScrutinizerQualityBase extends ScrutinizerBase {
|
||||
}
|
||||
|
||||
class ScrutinizerQuality extends ScrutinizerQualityBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/quality',
|
||||
pattern: ':vcs(g|b)/:user/:repo/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Scrutinizer code quality (GitHub/Bitbucket)',
|
||||
pattern: ':vcs(g|b)/:user/:repo/:branch?',
|
||||
@@ -80,7 +73,6 @@ class ScrutinizerQuality extends ScrutinizerQualityBase {
|
||||
staticPreview: this.render({ score: 8.26 }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ vcs, user, repo, branch }) {
|
||||
return this.makeBadge({
|
||||
@@ -92,19 +84,16 @@ class ScrutinizerQuality extends ScrutinizerQualityBase {
|
||||
}
|
||||
|
||||
class ScrutinizerQualityGitLab extends ScrutinizerQualityBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/quality/gl',
|
||||
pattern: ':instance/:user/:repo/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
// There are no known anonymous accessible Scrutinizer reports available for GitLab repos.
|
||||
// The example used is valid, but the project will not be accessible if Shields users try to use it.
|
||||
// https://gitlab.propertywindow.nl/propertywindow/client
|
||||
// https://scrutinizer-ci.com/gl/propertywindow/propertywindow/client/badges/quality-score.png?b=master&s=dfae6992a48184cc2333b4c349cec0447f0d67c2
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Scrutinizer coverage (GitLab)',
|
||||
pattern: ':instance/:user/:repo/:branch?',
|
||||
@@ -117,7 +106,6 @@ class ScrutinizerQualityGitLab extends ScrutinizerQualityBase {
|
||||
staticPreview: this.render({ score: 10.0 }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ instance, user, repo, branch }) {
|
||||
return this.makeBadge({
|
||||
@@ -129,12 +117,10 @@ class ScrutinizerQualityGitLab extends ScrutinizerQualityBase {
|
||||
}
|
||||
|
||||
class ScrutinizerQualityPlainGit extends ScrutinizerQualityBase {
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'scrutinizer/quality/gp',
|
||||
pattern: ':slug/:branch*',
|
||||
}
|
||||
}
|
||||
|
||||
async handle({ slug, branch }) {
|
||||
return this.makeBadge({ vcs: 'gp', slug, branch })
|
||||
|
||||
@@ -20,20 +20,15 @@ const documentation = `
|
||||
`
|
||||
|
||||
module.exports = class SecurityHeaders extends BaseService {
|
||||
static get category() {
|
||||
return 'monitoring'
|
||||
}
|
||||
static category = 'monitoring'
|
||||
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: '',
|
||||
pattern: 'security-headers',
|
||||
queryParamSchema,
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Security Headers',
|
||||
namedParams: {},
|
||||
@@ -44,13 +39,10 @@ module.exports = class SecurityHeaders extends BaseService {
|
||||
documentation,
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static get defaultBadgeData() {
|
||||
return {
|
||||
static defaultBadgeData = {
|
||||
label: 'security headers',
|
||||
}
|
||||
}
|
||||
|
||||
static render({ grade }) {
|
||||
const colorMap = {
|
||||
|
||||
@@ -30,19 +30,14 @@ const schema = Joi.array()
|
||||
.required()
|
||||
|
||||
class Shippable extends BaseJsonService {
|
||||
static get category() {
|
||||
return 'build'
|
||||
}
|
||||
static category = 'build'
|
||||
|
||||
static get route() {
|
||||
return {
|
||||
static route = {
|
||||
base: 'shippable',
|
||||
pattern: ':projectId/:branch+',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
return [
|
||||
static examples = [
|
||||
{
|
||||
title: 'Shippable',
|
||||
namedParams: {
|
||||
@@ -52,11 +47,8 @@ class Shippable extends BaseJsonService {
|
||||
staticPreview: this.render({ code: 30 }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static get defaultBadgeData() {
|
||||
return { label: 'shippable' }
|
||||
}
|
||||
static defaultBadgeData = { label: 'shippable' }
|
||||
|
||||
static render({ code }) {
|
||||
return renderBuildStatusBadge({ label: 'build', status: statusCodes[code] })
|
||||
|
||||
Reference in New Issue
Block a user