convert some service classes to static props, run [depfu discourse docker] (#5540)

* refactor(depfu): convert to static props

* refactor(discourse): convert to static props

* refactor(docker): convert to static props
This commit is contained in:
Caleb Cartwright
2020-09-14 16:44:55 -05:00
committed by GitHub
parent f1007a5ee2
commit 1d649fa702
10 changed files with 162 additions and 279 deletions

View File

@@ -9,33 +9,20 @@ const depfuSchema = Joi.object({
}).required()
module.exports = class Depfu extends BaseJsonService {
static get category() {
return 'dependencies'
}
static category = 'dependencies'
static route = { base: 'depfu', pattern: ':user/:repo' }
static examples = [
{
title: 'Depfu',
namedParams: { user: 'depfu', repo: 'example-ruby' },
staticPreview: this.render({
text: 'recent',
colorscheme: 'brightgreen',
}),
},
]
static get route() {
return {
base: 'depfu',
pattern: ':user/:repo',
}
}
static get examples() {
return [
{
title: 'Depfu',
namedParams: { user: 'depfu', repo: 'example-ruby' },
staticPreview: this.render({
text: 'recent',
colorscheme: 'brightgreen',
}),
},
]
}
static get defaultBadgeData() {
return { label: 'dependencies' }
}
static defaultBadgeData = { label: 'dependencies' }
static render({ text, colorscheme }) {
return {

View File

@@ -18,9 +18,7 @@ const queryParamSchema = Joi.object({
}).required()
class DiscourseBase extends BaseJsonService {
static get category() {
return 'chat'
}
static category = 'chat'
static buildRoute(metric) {
return {
@@ -30,9 +28,7 @@ class DiscourseBase extends BaseJsonService {
}
}
static get defaultBadgeData() {
return { label: 'discourse' }
}
static defaultBadgeData = { label: 'discourse' }
async fetch({ server }) {
return this._requestJson({
@@ -44,28 +40,21 @@ class DiscourseBase extends BaseJsonService {
function DiscourseMetricIntegrationFactory({ metricName, property }) {
return class DiscourseMetric extends DiscourseBase {
static get name() {
// The space is needed so we get 'DiscourseTopics' rather than
// 'Discoursetopics'. `camelcase()` removes it.
return camelcase(`Discourse ${metricName}`, { pascalCase: true })
}
// The space is needed so we get 'DiscourseTopics' rather than
// 'Discoursetopics'. `camelcase()` removes it.
static name = camelcase(`Discourse ${metricName}`, { pascalCase: true })
static route = this.buildRoute(metricName)
static get route() {
return this.buildRoute(metricName)
}
static get examples() {
return [
{
title: `Discourse ${metricName}`,
namedParams: {},
queryParams: {
server: 'https://meta.discourse.org',
},
staticPreview: this.render({ stat: 100 }),
static examples = [
{
title: `Discourse ${metricName}`,
namedParams: {},
queryParams: {
server: 'https://meta.discourse.org',
},
]
}
staticPreview: this.render({ stat: 100 }),
},
]
static render({ stat }) {
return {
@@ -82,22 +71,17 @@ function DiscourseMetricIntegrationFactory({ metricName, property }) {
}
class DiscourseStatus extends DiscourseBase {
static get route() {
return this.buildRoute('status')
}
static get examples() {
return [
{
title: `Discourse status`,
namedParams: {},
queryParams: {
server: 'https://meta.discourse.org',
},
staticPreview: this.render(),
static route = this.buildRoute('status')
static examples = [
{
title: `Discourse status`,
namedParams: {},
queryParams: {
server: 'https://meta.discourse.org',
},
]
}
staticPreview: this.render(),
},
]
static render() {
return {

View File

@@ -13,30 +13,20 @@ const automatedBuildSchema = Joi.object({
}).required()
module.exports = class DockerAutomatedBuild extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return buildDockerUrl('automated')
}
static get examples() {
return [
{
title: 'Docker Automated build',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
staticPreview: this.render({ isAutomated: true }),
static category = 'build'
static route = buildDockerUrl('automated')
static examples = [
{
title: 'Docker Automated build',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
]
}
staticPreview: this.render({ isAutomated: true }),
},
]
static get defaultBadgeData() {
return { label: 'docker build' }
}
static defaultBadgeData = { label: 'docker build' }
static render({ isAutomated }) {
if (isAutomated) {

View File

@@ -16,30 +16,20 @@ const buildSchema = Joi.object({
}).required()
module.exports = class DockerBuild extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return buildDockerUrl('build')
}
static get examples() {
return [
{
title: 'Docker Build Status',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
staticPreview: this.render({ status: 10 }),
static category = 'build'
static route = buildDockerUrl('build')
static examples = [
{
title: 'Docker Build Status',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
]
}
staticPreview: this.render({ status: 10 }),
},
]
static get defaultBadgeData() {
return { label: 'docker build' }
}
static defaultBadgeData = { label: 'docker build' }
static render({ status }) {
if (status === 10) {

View File

@@ -5,32 +5,21 @@ const { dockerBlue, buildDockerUrl } = require('./docker-helpers')
const { fetchBuild } = require('./docker-cloud-common-fetch')
module.exports = class DockerCloudAutomatedBuild extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return buildDockerUrl('cloud/automated')
}
static get examples() {
return [
{
title: 'Docker Cloud Automated build',
documentation:
'<p>For the new Docker Hub (https://cloud.docker.com)</p>',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
staticPreview: this.render({ buildSettings: ['test'] }),
static category = 'build'
static route = buildDockerUrl('cloud/automated')
static examples = [
{
title: 'Docker Cloud Automated build',
documentation: '<p>For the new Docker Hub (https://cloud.docker.com)</p>',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
]
}
staticPreview: this.render({ buildSettings: ['test'] }),
},
]
static get defaultBadgeData() {
return { label: 'docker build' }
}
static defaultBadgeData = { label: 'docker build' }
static render({ buildSettings }) {
if (buildSettings.length >= 1) {

View File

@@ -5,32 +5,21 @@ const { dockerBlue, buildDockerUrl } = require('./docker-helpers')
const { fetchBuild } = require('./docker-cloud-common-fetch')
module.exports = class DockerCloudBuild extends BaseJsonService {
static get category() {
return 'build'
}
static get route() {
return buildDockerUrl('cloud/build')
}
static get examples() {
return [
{
title: 'Docker Cloud Build Status',
documentation:
'<p>For the new Docker Hub (https://cloud.docker.com)</p>',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
staticPreview: this.render({ state: 'Success' }),
static category = 'build'
static route = buildDockerUrl('cloud/build')
static examples = [
{
title: 'Docker Cloud Build Status',
documentation: '<p>For the new Docker Hub (https://cloud.docker.com)</p>',
namedParams: {
user: 'jrottenberg',
repo: 'ffmpeg',
},
]
}
staticPreview: this.render({ state: 'Success' }),
},
]
static get defaultBadgeData() {
return { label: 'docker build' }
}
static defaultBadgeData = { label: 'docker build' }
static render({ state }) {
if (state === 'Success') {

View File

@@ -15,30 +15,20 @@ const pullsSchema = Joi.object({
}).required()
module.exports = class DockerPulls extends BaseJsonService {
static get category() {
return 'downloads'
}
static get route() {
return buildDockerUrl('pulls')
}
static get examples() {
return [
{
title: 'Docker Pulls',
namedParams: {
user: '_',
repo: 'ubuntu',
},
staticPreview: this.render({ count: 765400000 }),
static category = 'downloads'
static route = buildDockerUrl('pulls')
static examples = [
{
title: 'Docker Pulls',
namedParams: {
user: '_',
repo: 'ubuntu',
},
]
}
staticPreview: this.render({ count: 765400000 }),
},
]
static get defaultBadgeData() {
return { label: 'docker pulls' }
}
static defaultBadgeData = { label: 'docker pulls' }
static render({ count }) {
return {

View File

@@ -31,45 +31,32 @@ const queryParamSchema = Joi.object({
}).required()
module.exports = class DockerSize extends BaseJsonService {
static get category() {
return 'size'
}
static category = 'size'
static route = { ...buildDockerUrl('image-size', true), queryParamSchema }
static examples = [
{
title: 'Docker Image Size (latest by date)',
pattern: ':user/:repo',
namedParams: { user: 'fedora', repo: 'apache' },
queryParams: { sort: 'date' },
staticPreview: this.render({ size: 126000000 }),
},
{
title: 'Docker Image Size (latest semver)',
pattern: ':user/:repo',
namedParams: { user: 'fedora', repo: 'apache' },
queryParams: { sort: 'semver' },
staticPreview: this.render({ size: 136000000 }),
},
{
title: 'Docker Image Size (tag)',
pattern: ':user/:repo/:tag',
namedParams: { user: 'fedora', repo: 'apache', tag: 'latest' },
staticPreview: this.render({ size: 103000000 }),
},
]
static get route() {
return { ...buildDockerUrl('image-size', true), queryParamSchema }
}
static get examples() {
return [
{
title: 'Docker Image Size (latest by date)',
pattern: ':user/:repo',
namedParams: { user: 'fedora', repo: 'apache' },
queryParams: { sort: 'date' },
staticPreview: this.render({ size: 126000000 }),
},
{
title: 'Docker Image Size (latest semver)',
pattern: ':user/:repo',
namedParams: { user: 'fedora', repo: 'apache' },
queryParams: { sort: 'semver' },
staticPreview: this.render({ size: 136000000 }),
},
{
title: 'Docker Image Size (tag)',
pattern: ':user/:repo/:tag',
namedParams: { user: 'fedora', repo: 'apache', tag: 'latest' },
staticPreview: this.render({ size: 103000000 }),
},
]
}
static get defaultBadgeData() {
return {
label: 'image size',
color: 'blue',
}
}
static defaultBadgeData = { label: 'image size', color: 'blue' }
static render({ size }) {
return { message: prettyBytes(size) }

View File

@@ -10,30 +10,20 @@ const {
} = require('./docker-helpers')
module.exports = class DockerStars extends BaseService {
static get category() {
return 'rating'
}
static get route() {
return buildDockerUrl('stars')
}
static get examples() {
return [
{
title: 'Docker Stars',
namedParams: {
user: '_',
repo: 'ubuntu',
},
staticPreview: this.render({ stars: 9000 }),
static category = 'rating'
static route = buildDockerUrl('stars')
static examples = [
{
title: 'Docker Stars',
namedParams: {
user: '_',
repo: 'ubuntu',
},
]
}
staticPreview: this.render({ stars: 9000 }),
},
]
static get defaultBadgeData() {
return { label: 'docker stars' }
}
static defaultBadgeData = { label: 'docker stars' }
static render({ stars }) {
return {

View File

@@ -31,45 +31,32 @@ const queryParamSchema = Joi.object({
}).required()
module.exports = class DockerVersion extends BaseJsonService {
static get category() {
return 'version'
}
static category = 'version'
static route = { ...buildDockerUrl('v', true), queryParamSchema }
static examples = [
{
title: 'Docker Image Version (latest by date)',
pattern: ':user/:repo',
namedParams: { user: '_', repo: 'alpine' },
queryParams: { sort: 'date' },
staticPreview: this.render({ version: '3.9.5' }),
},
{
title: 'Docker Image Version (latest semver)',
pattern: ':user/:repo',
namedParams: { user: '_', repo: 'alpine' },
queryParams: { sort: 'semver' },
staticPreview: this.render({ version: '3.11.3' }),
},
{
title: 'Docker Image Version (tag latest semver)',
pattern: ':user/:repo/:tag',
namedParams: { user: '_', repo: 'alpine', tag: '3.6' },
staticPreview: this.render({ version: '3.6.5' }),
},
]
static get route() {
return { ...buildDockerUrl('v', true), queryParamSchema }
}
static get examples() {
return [
{
title: 'Docker Image Version (latest by date)',
pattern: ':user/:repo',
namedParams: { user: '_', repo: 'alpine' },
queryParams: { sort: 'date' },
staticPreview: this.render({ version: '3.9.5' }),
},
{
title: 'Docker Image Version (latest semver)',
pattern: ':user/:repo',
namedParams: { user: '_', repo: 'alpine' },
queryParams: { sort: 'semver' },
staticPreview: this.render({ version: '3.11.3' }),
},
{
title: 'Docker Image Version (tag latest semver)',
pattern: ':user/:repo/:tag',
namedParams: { user: '_', repo: 'alpine', tag: '3.6' },
staticPreview: this.render({ version: '3.6.5' }),
},
]
}
static get defaultBadgeData() {
return {
label: 'version',
color: 'blue',
}
}
static defaultBadgeData = { label: 'version', color: 'blue' }
static render({ version }) {
return renderVersionBadge({ version })