From ac54dd3cede9af54dfb4edcb0a65f205256d6541 Mon Sep 17 00:00:00 2001 From: Caleb Cartwright Date: Mon, 14 Sep 2020 20:42:57 -0500 Subject: [PATCH] convert some service classes to static props, run [drone dub dynamic] (#5543) * refactor(drone): convert to static props * refactor(dub): convert to static props * refactor(dynamic): convert to static props --- services/drone/drone-build.service.js | 112 ++++++++++------------- services/dub/dub-download.service.js | 85 ++++++++--------- services/dub/dub-license.service.js | 33 ++----- services/dub/dub-version.service.js | 33 ++----- services/dynamic/dynamic-json.service.js | 9 +- services/dynamic/dynamic-xml.service.js | 21 +---- services/dynamic/dynamic-yaml.service.js | 9 +- services/dynamic/json-path.js | 11 +-- 8 files changed, 117 insertions(+), 196 deletions(-) diff --git a/services/drone/drone-build.service.js b/services/drone/drone-build.service.js index b89fe14a50..4d52f6549a 100644 --- a/services/drone/drone-build.service.js +++ b/services/drone/drone-build.service.js @@ -16,72 +16,58 @@ const queryParamSchema = Joi.object({ }).required() module.exports = class DroneBuild extends BaseJsonService { - static get category() { - return 'build' + static category = 'build' + static route = { + base: 'drone/build', + pattern: ':user/:repo/:branch*', + queryParamSchema, } - static get route() { - return { - queryParamSchema, - base: 'drone/build', - pattern: ':user/:repo/:branch*', - } - } + static auth = { passKey: 'drone_token', serviceKey: 'drone' } + static examples = [ + { + title: 'Drone (cloud)', + pattern: ':user/:repo', + namedParams: { + user: 'drone', + repo: 'drone', + }, + staticPreview: renderBuildStatusBadge({ status: 'success' }), + }, + { + title: 'Drone (cloud) with branch', + pattern: ':user/:repo/:branch', + namedParams: { + user: 'drone', + repo: 'drone', + branch: 'master', + }, + staticPreview: renderBuildStatusBadge({ status: 'success' }), + }, + { + title: 'Drone (self-hosted)', + pattern: ':user/:repo', + queryParams: { server: 'https://drone.shields.io' }, + namedParams: { + user: 'badges', + repo: 'shields', + }, + staticPreview: renderBuildStatusBadge({ status: 'success' }), + }, + { + title: 'Drone (self-hosted) with branch', + pattern: ':user/:repo/:branch', + queryParams: { server: 'https://drone.shields.io' }, + namedParams: { + user: 'badges', + repo: 'shields', + branch: 'feat/awesome-thing', + }, + staticPreview: renderBuildStatusBadge({ status: 'success' }), + }, + ] - static get auth() { - return { passKey: 'drone_token', serviceKey: 'drone' } - } - - static get examples() { - return [ - { - title: 'Drone (cloud)', - pattern: ':user/:repo', - namedParams: { - user: 'drone', - repo: 'drone', - }, - staticPreview: renderBuildStatusBadge({ status: 'success' }), - }, - { - title: 'Drone (cloud) with branch', - pattern: ':user/:repo/:branch', - namedParams: { - user: 'drone', - repo: 'drone', - branch: 'master', - }, - staticPreview: renderBuildStatusBadge({ status: 'success' }), - }, - { - title: 'Drone (self-hosted)', - pattern: ':user/:repo', - queryParams: { server: 'https://drone.shields.io' }, - namedParams: { - user: 'badges', - repo: 'shields', - }, - staticPreview: renderBuildStatusBadge({ status: 'success' }), - }, - { - title: 'Drone (self-hosted) with branch', - pattern: ':user/:repo/:branch', - queryParams: { server: 'https://drone.shields.io' }, - namedParams: { - user: 'badges', - repo: 'shields', - branch: 'feat/awesome-thing', - }, - staticPreview: renderBuildStatusBadge({ status: 'success' }), - }, - ] - } - - static get defaultBadgeData() { - return { - label: 'build', - } - } + static defaultBadgeData = { label: 'build' } async handle({ user, repo, branch }, { server = 'https://cloud.drone.io' }) { const json = await this._requestJson( diff --git a/services/dub/dub-download.service.js b/services/dub/dub-download.service.js index 1fff566827..218d6116bd 100644 --- a/services/dub/dub-download.service.js +++ b/services/dub/dub-download.service.js @@ -35,56 +35,47 @@ const intervalMap = { } module.exports = class DubDownloads extends BaseJsonService { - static get category() { - return 'downloads' + static category = 'downloads' + static route = { + base: 'dub', + pattern: ':interval(dd|dw|dm|dt)/:packageName/:version*', } - static get route() { - return { - base: 'dub', - pattern: ':interval(dd|dw|dm|dt)/:packageName/:version*', - } - } + static examples = [ + { + title: 'DUB', + namedParams: { interval: 'dm', packageName: 'vibe-d' }, + staticPreview: this.render({ interval: 'dm', downloadCount: 5000 }), + }, + { + title: 'DUB (version)', + namedParams: { + interval: 'dm', + packageName: 'vibe-d', + version: '0.8.4', + }, + staticPreview: this.render({ + interval: 'dm', + version: '0.8.4', + downloadCount: 100, + }), + }, + { + title: 'DUB (latest)', + namedParams: { + interval: 'dm', + packageName: 'vibe-d', + version: 'latest', + }, + staticPreview: this.render({ + interval: 'dm', + version: 'latest', + downloadCount: 100, + }), + }, + ] - static get examples() { - return [ - { - title: 'DUB', - namedParams: { interval: 'dm', packageName: 'vibe-d' }, - staticPreview: this.render({ interval: 'dm', downloadCount: 5000 }), - }, - { - title: 'DUB (version)', - namedParams: { - interval: 'dm', - packageName: 'vibe-d', - version: '0.8.4', - }, - staticPreview: this.render({ - interval: 'dm', - version: '0.8.4', - downloadCount: 100, - }), - }, - { - title: 'DUB (latest)', - namedParams: { - interval: 'dm', - packageName: 'vibe-d', - version: 'latest', - }, - staticPreview: this.render({ - interval: 'dm', - version: 'latest', - downloadCount: 100, - }), - }, - ] - } - - static get defaultBadgeData() { - return { label: 'downloads' } - } + static defaultBadgeData = { label: 'downloads' } static render({ interval, version, downloadCount }) { const { messageSuffix } = intervalMap[interval] diff --git a/services/dub/dub-license.service.js b/services/dub/dub-license.service.js index 3a68c843f7..6574f8f239 100644 --- a/services/dub/dub-license.service.js +++ b/services/dub/dub-license.service.js @@ -9,30 +9,17 @@ const schema = Joi.object({ }) module.exports = class DubLicense extends BaseJsonService { - static get category() { - return 'license' - } + static category = 'license' + static route = { base: 'dub/l', pattern: ':packageName' } + static examples = [ + { + title: 'DUB', + namedParams: { packageName: 'vibe-d' }, + staticPreview: renderLicenseBadge({ licenses: ['MIT'] }), + }, + ] - static get route() { - return { - base: 'dub/l', - pattern: ':packageName', - } - } - - static get examples() { - return [ - { - title: 'DUB', - namedParams: { packageName: 'vibe-d' }, - staticPreview: renderLicenseBadge({ licenses: ['MIT'] }), - }, - ] - } - - static get defaultBadgeData() { - return { label: 'license' } - } + static defaultBadgeData = { label: 'license' } async fetch({ packageName }) { return this._requestJson({ diff --git a/services/dub/dub-version.service.js b/services/dub/dub-version.service.js index 33cbb90454..83931f4ea5 100644 --- a/services/dub/dub-version.service.js +++ b/services/dub/dub-version.service.js @@ -7,30 +7,17 @@ const { BaseJsonService } = require('..') const schema = Joi.string().required() module.exports = class DubVersion extends BaseJsonService { - static get category() { - return 'version' - } + static category = 'version' + static route = { base: 'dub/v', pattern: ':packageName' } + static examples = [ + { + title: 'DUB', + namedParams: { packageName: 'vibe-d' }, + staticPreview: renderVersionBadge({ version: 'v0.8.4' }), + }, + ] - static get route() { - return { - base: 'dub/v', - pattern: ':packageName', - } - } - - static get examples() { - return [ - { - title: 'DUB', - namedParams: { packageName: 'vibe-d' }, - staticPreview: renderVersionBadge({ version: 'v0.8.4' }), - }, - ] - } - - static get defaultBadgeData() { - return { label: 'dub' } - } + static defaultBadgeData = { label: 'dub' } async fetch({ packageName }) { return this._requestJson({ diff --git a/services/dynamic/dynamic-json.service.js b/services/dynamic/dynamic-json.service.js index 2d9ced69e9..337fe66d2d 100644 --- a/services/dynamic/dynamic-json.service.js +++ b/services/dynamic/dynamic-json.service.js @@ -6,13 +6,8 @@ const { createRoute } = require('./dynamic-helpers') const jsonPath = require('./json-path') module.exports = class DynamicJson extends jsonPath(BaseJsonService) { - static get enabledMetrics() { - return [MetricNames.SERVICE_RESPONSE_SIZE] - } - - static get route() { - return createRoute('json') - } + static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE] + static route = createRoute('json') async fetch({ schema, url, errorMessages }) { return this._requestJson({ diff --git a/services/dynamic/dynamic-xml.service.js b/services/dynamic/dynamic-xml.service.js index 2867f1566c..9c14c59649 100644 --- a/services/dynamic/dynamic-xml.service.js +++ b/services/dynamic/dynamic-xml.service.js @@ -14,23 +14,10 @@ const { createRoute } = require('./dynamic-helpers') // JSON parser and write the queries in jsonpath instead. Then eventually // deprecate the old version. module.exports = class DynamicXml extends BaseService { - static get category() { - return 'dynamic' - } - - static get enabledMetrics() { - return [MetricNames.SERVICE_RESPONSE_SIZE] - } - - static get route() { - return createRoute('xml') - } - - static get defaultBadgeData() { - return { - label: 'custom badge', - } - } + static category = 'dynamic' + static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE] + static route = createRoute('xml') + static defaultBadgeData = { label: 'custom badge' } transform({ pathExpression, buffer }) { // e.g. //book[2]/@id diff --git a/services/dynamic/dynamic-yaml.service.js b/services/dynamic/dynamic-yaml.service.js index 9e96ada0a2..a774717086 100644 --- a/services/dynamic/dynamic-yaml.service.js +++ b/services/dynamic/dynamic-yaml.service.js @@ -6,13 +6,8 @@ const { createRoute } = require('./dynamic-helpers') const jsonPath = require('./json-path') module.exports = class DynamicYaml extends jsonPath(BaseYamlService) { - static get enabledMetrics() { - return [MetricNames.SERVICE_RESPONSE_SIZE] - } - - static get route() { - return createRoute('yaml') - } + static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE] + static route = createRoute('yaml') async fetch({ schema, url, errorMessages }) { return this._requestYaml({ diff --git a/services/dynamic/json-path.js b/services/dynamic/json-path.js index 2a5a3652d2..2ef0af988a 100644 --- a/services/dynamic/json-path.js +++ b/services/dynamic/json-path.js @@ -17,15 +17,8 @@ const { InvalidParameter, InvalidResponse } = require('..') */ module.exports = superclass => class extends superclass { - static get category() { - return 'dynamic' - } - - static get defaultBadgeData() { - return { - label: 'custom badge', - } - } + static category = 'dynamic' + static defaultBadgeData = { label: 'custom badge' } /** * Request data from an upstream API, transform it to JSON and validate against a schema