From 5d1ddbc3febfb353a9e96040bde2919ecb14835e Mon Sep 17 00:00:00 2001 From: chris48s Date: Mon, 4 Dec 2023 12:53:21 +0000 Subject: [PATCH] migrate examples to openApi part 13; affects [curseforge date fedora hsts modrinth ore] (#9499) * migrate some services from examples to openApi * improve and de-dupe service titles * improve ore description --- services/curseforge/curseforge-base.js | 4 +- .../curseforge-downloads.service.js | 21 +++++----- .../curseforge-game-versions.service.js | 21 +++++----- .../curseforge/curseforge-version.service.js | 23 ++++++----- services/date/date.service.js | 24 ++++++----- services/fedora/fedora.service.js | 40 ++++++++++++++----- services/hsts/hsts.service.js | 24 ++++++----- services/modrinth/modrinth-base.js | 4 +- .../modrinth/modrinth-downloads.service.js | 21 ++++++---- .../modrinth/modrinth-followers.service.js | 24 ++++++----- .../modrinth-game-versions.service.js | 21 ++++++---- services/modrinth/modrinth-version.service.js | 21 ++++++---- services/ore/ore-base.js | 7 ++-- services/ore/ore-category.service.js | 22 +++++----- services/ore/ore-downloads.service.js | 22 +++++----- services/ore/ore-license.service.js | 22 +++++----- services/ore/ore-sponge-versions.service.js | 22 +++++----- services/ore/ore-stars.service.js | 22 +++++----- services/ore/ore-version.service.js | 22 +++++----- 19 files changed, 226 insertions(+), 161 deletions(-) diff --git a/services/curseforge/curseforge-base.js b/services/curseforge/curseforge-base.js index 599afe5d77..c3da27ec86 100644 --- a/services/curseforge/curseforge-base.js +++ b/services/curseforge/curseforge-base.js @@ -14,7 +14,7 @@ const schema = Joi.object({ }).required(), }).required() -const documentation = ` +const description = `

The CurseForge badge requires the Project ID in order access the CurseForge API. @@ -58,4 +58,4 @@ export default class BaseCurseForgeService extends BaseJsonService { } } -export { BaseCurseForgeService, documentation } +export { BaseCurseForgeService, description } diff --git a/services/curseforge/curseforge-downloads.service.js b/services/curseforge/curseforge-downloads.service.js index 7156214ae6..ef6ecfa521 100644 --- a/services/curseforge/curseforge-downloads.service.js +++ b/services/curseforge/curseforge-downloads.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { renderDownloadsBadge } from '../downloads.js' -import BaseCurseForgeService, { documentation } from './curseforge-base.js' +import BaseCurseForgeService, { description } from './curseforge-base.js' export default class CurseForgeDownloads extends BaseCurseForgeService { static category = 'downloads' @@ -9,16 +10,18 @@ export default class CurseForgeDownloads extends BaseCurseForgeService { pattern: ':projectId', } - static examples = [ - { - title: 'CurseForge Downloads', - namedParams: { - projectId: '238222', + static openApi = { + '/curseforge/dt/{projectId}': { + get: { + summary: 'CurseForge Downloads', + description, + parameters: pathParams({ + name: 'projectId', + example: '238222', + }), }, - staticPreview: renderDownloadsBadge({ downloads: 234000000 }), - documentation, }, - ] + } static defaultBadgeData = { label: 'downloads' } diff --git a/services/curseforge/curseforge-game-versions.service.js b/services/curseforge/curseforge-game-versions.service.js index 47baa515f5..4bbc3589eb 100644 --- a/services/curseforge/curseforge-game-versions.service.js +++ b/services/curseforge/curseforge-game-versions.service.js @@ -1,4 +1,5 @@ -import BaseCurseForgeService, { documentation } from './curseforge-base.js' +import { pathParams } from '../index.js' +import BaseCurseForgeService, { description } from './curseforge-base.js' export default class CurseForgeGameVersions extends BaseCurseForgeService { static category = 'platform-support' @@ -8,16 +9,18 @@ export default class CurseForgeGameVersions extends BaseCurseForgeService { pattern: ':projectId', } - static examples = [ - { - title: 'CurseForge Game Versions', - namedParams: { - projectId: '238222', + static openApi = { + '/curseforge/game-versions/{projectId}': { + get: { + summary: 'CurseForge Game Versions', + description, + parameters: pathParams({ + name: 'projectId', + example: '238222', + }), }, - staticPreview: this.render({ versions: ['1.20.0', '1.19.4'] }), - documentation, }, - ] + } static defaultBadgeData = { label: 'game versions' } diff --git a/services/curseforge/curseforge-version.service.js b/services/curseforge/curseforge-version.service.js index cdf032e0c0..4babe314f6 100644 --- a/services/curseforge/curseforge-version.service.js +++ b/services/curseforge/curseforge-version.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { renderVersionBadge } from '../version.js' -import BaseCurseForgeService, { documentation } from './curseforge-base.js' +import BaseCurseForgeService, { description } from './curseforge-base.js' export default class CurseForgeVersion extends BaseCurseForgeService { static category = 'version' @@ -9,18 +10,18 @@ export default class CurseForgeVersion extends BaseCurseForgeService { pattern: ':projectId', } - static examples = [ - { - title: 'CurseForge Version', - namedParams: { - projectId: '238222', + static openApi = { + '/curseforge/v/{projectId}': { + get: { + summary: 'CurseForge Version', + description, + parameters: pathParams({ + name: 'projectId', + example: '238222', + }), }, - staticPreview: renderVersionBadge({ - version: 'jei-1.20-forge-14.0.0.4.jar', - }), - documentation, }, - ] + } static defaultBadgeData = { label: 'version' } diff --git a/services/date/date.service.js b/services/date/date.service.js index d728db5ca4..a7fd39e0a3 100644 --- a/services/date/date.service.js +++ b/services/date/date.service.js @@ -1,7 +1,7 @@ import { formatRelativeDate } from '../text-formatters.js' -import { BaseService } from '../index.js' +import { BaseService, pathParams } from '../index.js' -const documentation = ` +const description = `

Supply a unix timestamp in seconds to display the relative time from/to now

@@ -11,16 +11,18 @@ export default class Date extends BaseService { static category = 'other' static route = { base: 'date', pattern: ':timestamp(-?[0-9]+)' } - static examples = [ - { - title: 'Relative date', - pattern: ':timestamp', - namedParams: { timestamp: '1540814400' }, - staticPreview: this.render({ relativeDateString: '2 days ago' }), - keywords: ['time', 'countdown', 'countup', 'moment'], - documentation, + static openApi = { + '/date/{timestamp}': { + get: { + summary: 'Relative date', + description, + parameters: pathParams({ + name: 'timestamp', + example: '1540814400', + }), + }, }, - ] + } static defaultBadgeData = { label: 'date' } diff --git a/services/fedora/fedora.service.js b/services/fedora/fedora.service.js index be6d424a15..8d9e88d526 100644 --- a/services/fedora/fedora.service.js +++ b/services/fedora/fedora.service.js @@ -1,6 +1,6 @@ import Joi from 'joi' import { renderVersionBadge } from '../version.js' -import { BaseJsonService } from '../index.js' +import { BaseJsonService, pathParams } from '../index.js' const schema = Joi.object({ version: Joi.string().required(), @@ -9,18 +9,40 @@ const schema = Joi.object({ // No way to permalink to current "stable", https://pagure.io/mdapi/issue/69 const defaultBranch = 'rawhide' +const description = + 'See mdapi docs for information on valid branches.' + export default class Fedora extends BaseJsonService { static category = 'version' static route = { base: 'fedora/v', pattern: ':packageName/:branch?' } - static examples = [ - { - title: 'Fedora package', - namedParams: { packageName: 'rpm', branch: 'rawhide' }, - staticPreview: renderVersionBadge({ version: '4.14.2.1' }), - documentation: - 'See mdapi docs for information on valid branches.', + static openApi = { + '/fedora/v/{packageName}/{branch}': { + get: { + summary: 'Fedora package (with branch)', + description, + parameters: pathParams( + { + name: 'packageName', + example: 'rpm', + }, + { + name: 'branch', + example: 'rawhide', + }, + ), + }, }, - ] + '/fedora/v/{packageName}': { + get: { + summary: 'Fedora package', + description, + parameters: pathParams({ + name: 'packageName', + example: 'rpm', + }), + }, + }, + } static defaultBadgeData = { label: 'fedora' } diff --git a/services/hsts/hsts.service.js b/services/hsts/hsts.service.js index 5ea7760520..f809145f59 100644 --- a/services/hsts/hsts.service.js +++ b/services/hsts/hsts.service.js @@ -1,11 +1,12 @@ import Joi from 'joi' -import { BaseJsonService } from '../index.js' +import { BaseJsonService, pathParams } from '../index.js' + const label = 'hsts preloaded' const schema = Joi.object({ status: Joi.string().required(), }).required() -const documentation = ` +const description = ` [\`Strict-Transport-Security\` is an HTTP response header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) that signals that browsers should only access the site using HTTPS. @@ -24,15 +25,18 @@ export default class HSTS extends BaseJsonService { pattern: ':domain', } - static examples = [ - { - title: 'Chromium HSTS preload', - namedParams: { domain: 'github.com' }, - staticPreview: this.render({ status: 'preloaded' }), - keywords: ['security'], - documentation, + static openApi = { + '/hsts/preload/{domain}': { + get: { + summary: 'Chromium HSTS preload', + description, + parameters: pathParams({ + name: 'domain', + example: 'github.com', + }), + }, }, - ] + } static render({ status }) { let color = 'red' diff --git a/services/modrinth/modrinth-base.js b/services/modrinth/modrinth-base.js index d5867e88e8..4ff42273e9 100644 --- a/services/modrinth/modrinth-base.js +++ b/services/modrinth/modrinth-base.js @@ -16,7 +16,7 @@ const versionSchema = Joi.array() ) .required() -const documentation = +const description = "

You can use your project slug, or the project ID. The ID can be found in the 'Technical information' section of your Modrinth page.

" class BaseModrinthService extends BaseJsonService { @@ -36,4 +36,4 @@ class BaseModrinthService extends BaseJsonService { } } -export { BaseModrinthService, documentation } +export { BaseModrinthService, description } diff --git a/services/modrinth/modrinth-downloads.service.js b/services/modrinth/modrinth-downloads.service.js index 90dfa0cf21..ca8e1d8324 100644 --- a/services/modrinth/modrinth-downloads.service.js +++ b/services/modrinth/modrinth-downloads.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { renderDownloadsBadge } from '../downloads.js' -import { BaseModrinthService, documentation } from './modrinth-base.js' +import { BaseModrinthService, description } from './modrinth-base.js' export default class ModrinthDownloads extends BaseModrinthService { static category = 'downloads' @@ -9,14 +10,18 @@ export default class ModrinthDownloads extends BaseModrinthService { pattern: ':projectId', } - static examples = [ - { - title: 'Modrinth Downloads', - namedParams: { projectId: 'AANobbMI' }, - staticPreview: renderDownloadsBadge({ downloads: 120000 }), - documentation, + static openApi = { + '/modrinth/dt/{projectId}': { + get: { + summary: 'Modrinth Downloads', + description, + parameters: pathParams({ + name: 'projectId', + example: 'AANobbMI', + }), + }, }, - ] + } static defaultBadgeData = { label: 'downloads' } diff --git a/services/modrinth/modrinth-followers.service.js b/services/modrinth/modrinth-followers.service.js index 82f6af6315..93035f9eb1 100644 --- a/services/modrinth/modrinth-followers.service.js +++ b/services/modrinth/modrinth-followers.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { metric } from '../text-formatters.js' -import { BaseModrinthService, documentation } from './modrinth-base.js' +import { BaseModrinthService, description } from './modrinth-base.js' export default class ModrinthFollowers extends BaseModrinthService { static category = 'social' @@ -9,17 +10,18 @@ export default class ModrinthFollowers extends BaseModrinthService { pattern: ':projectId', } - static examples = [ - { - title: 'Modrinth Followers', - namedParams: { projectId: 'AANobbMI' }, - staticPreview: Object.assign(this.render({ followers: 176 }), { - label: 'Followers', - style: 'social', - }), - documentation, + static openApi = { + '/modrinth/followers/{projectId}': { + get: { + summary: 'Modrinth Followers', + description, + parameters: pathParams({ + name: 'projectId', + example: 'AANobbMI', + }), + }, }, - ] + } static defaultBadgeData = { label: 'followers' } diff --git a/services/modrinth/modrinth-game-versions.service.js b/services/modrinth/modrinth-game-versions.service.js index 88939d9371..634496c330 100644 --- a/services/modrinth/modrinth-game-versions.service.js +++ b/services/modrinth/modrinth-game-versions.service.js @@ -1,4 +1,5 @@ -import { BaseModrinthService, documentation } from './modrinth-base.js' +import { pathParams } from '../index.js' +import { BaseModrinthService, description } from './modrinth-base.js' export default class ModrinthGameVersions extends BaseModrinthService { static category = 'platform-support' @@ -8,14 +9,18 @@ export default class ModrinthGameVersions extends BaseModrinthService { pattern: ':projectId', } - static examples = [ - { - title: 'Modrinth Game Versions', - namedParams: { projectId: 'AANobbMI' }, - staticPreview: this.render({ versions: ['1.19.2', '1.19.1', '1.19'] }), - documentation, + static openApi = { + '/modrinth/game-versions/{projectId}': { + get: { + summary: 'Modrinth Game Versions', + description, + parameters: pathParams({ + name: 'projectId', + example: 'AANobbMI', + }), + }, }, - ] + } static defaultBadgeData = { label: 'game versions' } diff --git a/services/modrinth/modrinth-version.service.js b/services/modrinth/modrinth-version.service.js index cb6dc93e91..93e351f8b7 100644 --- a/services/modrinth/modrinth-version.service.js +++ b/services/modrinth/modrinth-version.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { renderVersionBadge } from '../version.js' -import { BaseModrinthService, documentation } from './modrinth-base.js' +import { BaseModrinthService, description } from './modrinth-base.js' export default class ModrinthVersion extends BaseModrinthService { static category = 'version' @@ -9,14 +10,18 @@ export default class ModrinthVersion extends BaseModrinthService { pattern: ':projectId', } - static examples = [ - { - title: 'Modrinth Version', - namedParams: { projectId: 'AANobbMI' }, - staticPreview: renderVersionBadge({ version: '0.4.4' }), - documentation, + static openApi = { + '/modrinth/v/{projectId}': { + get: { + summary: 'Modrinth Version', + description, + parameters: pathParams({ + name: 'projectId', + example: 'AANobbMI', + }), + }, }, - ] + } static defaultBadgeData = { label: 'version' } diff --git a/services/ore/ore-base.js b/services/ore/ore-base.js index 612550fa46..a2388c9921 100644 --- a/services/ore/ore-base.js +++ b/services/ore/ore-base.js @@ -32,12 +32,11 @@ const resourceSchema = Joi.object({ }).required(), }).required() -const documentation = ` +const description = ` +

Ore is a Minecraft package repository.

Your Plugin ID is the name of your plugin in lowercase, without any spaces or dashes.

Example: https://ore.spongepowered.org/Erigitic/Total-Economy - Here the Plugin ID is totaleconomy.

` -const keywords = ['sponge', 'spongemc', 'spongepowered'] - class BaseOreService extends BaseJsonService { async _refreshSessionToken() { const requestOptions = { @@ -83,4 +82,4 @@ class BaseOreService extends BaseJsonService { BaseOreService.sessionToken = null -export { keywords, documentation, BaseOreService } +export { description, BaseOreService } diff --git a/services/ore/ore-category.service.js b/services/ore/ore-category.service.js index ab0e067ce0..1fabb6c545 100644 --- a/services/ore/ore-category.service.js +++ b/services/ore/ore-category.service.js @@ -1,4 +1,5 @@ -import { BaseOreService, documentation, keywords } from './ore-base.js' +import { pathParams } from '../index.js' +import { BaseOreService, description } from './ore-base.js' export default class OreCategory extends BaseOreService { static category = 'other' @@ -8,17 +9,18 @@ export default class OreCategory extends BaseOreService { pattern: ':pluginId', } - static examples = [ - { - title: 'Ore Category', - namedParams: { - pluginId: 'nucleus', + static openApi = { + '/ore/category/{pluginId}': { + get: { + summary: 'Ore Category', + description, + parameters: pathParams({ + name: 'pluginId', + example: 'nucleus', + }), }, - staticPreview: this.render({ category: 'misc' }), - documentation, - keywords, }, - ] + } static defaultBadgeData = { label: 'category', diff --git a/services/ore/ore-downloads.service.js b/services/ore/ore-downloads.service.js index bcd7be2b33..15f28b4409 100644 --- a/services/ore/ore-downloads.service.js +++ b/services/ore/ore-downloads.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { renderDownloadsBadge } from '../downloads.js' -import { BaseOreService, documentation, keywords } from './ore-base.js' +import { BaseOreService, description } from './ore-base.js' export default class OreDownloads extends BaseOreService { static category = 'downloads' @@ -9,15 +10,18 @@ export default class OreDownloads extends BaseOreService { pattern: ':pluginId', } - static examples = [ - { - title: 'Ore Downloads', - namedParams: { pluginId: 'nucleus' }, - staticPreview: renderDownloadsBadge({ downloads: 560891 }), - documentation, - keywords, + static openApi = { + '/ore/dt/{pluginId}': { + get: { + summary: 'Ore Downloads', + description, + parameters: pathParams({ + name: 'pluginId', + example: 'nucleus', + }), + }, }, - ] + } static defaultBadgeData = { label: 'downloads' } diff --git a/services/ore/ore-license.service.js b/services/ore/ore-license.service.js index 362c226aa9..07f870e646 100644 --- a/services/ore/ore-license.service.js +++ b/services/ore/ore-license.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { renderLicenseBadge } from '../licenses.js' -import { BaseOreService, documentation, keywords } from './ore-base.js' +import { BaseOreService, description } from './ore-base.js' export default class OreLicense extends BaseOreService { static category = 'license' @@ -9,17 +10,18 @@ export default class OreLicense extends BaseOreService { pattern: ':pluginId', } - static examples = [ - { - title: 'Ore License', - namedParams: { - pluginId: 'nucleus', + static openApi = { + '/ore/l/{pluginId}': { + get: { + summary: 'Ore License', + description, + parameters: pathParams({ + name: 'pluginId', + example: 'nucleus', + }), }, - staticPreview: this.render({ license: 'MIT' }), - documentation, - keywords, }, - ] + } static defaultBadgeData = { label: 'license', diff --git a/services/ore/ore-sponge-versions.service.js b/services/ore/ore-sponge-versions.service.js index 3603b3ef23..0a6c891904 100644 --- a/services/ore/ore-sponge-versions.service.js +++ b/services/ore/ore-sponge-versions.service.js @@ -1,4 +1,5 @@ -import { BaseOreService, documentation, keywords } from './ore-base.js' +import { pathParams } from '../index.js' +import { BaseOreService, description } from './ore-base.js' export default class OreSpongeVersions extends BaseOreService { static category = 'platform-support' @@ -8,17 +9,18 @@ export default class OreSpongeVersions extends BaseOreService { pattern: ':pluginId', } - static examples = [ - { - title: 'Compatible versions (plugins on Ore)', - namedParams: { - pluginId: 'nucleus', + static openApi = { + '/ore/sponge-versions/{pluginId}': { + get: { + summary: 'Compatible versions (plugins on Ore)', + description, + parameters: pathParams({ + name: 'pluginId', + example: 'nucleus', + }), }, - staticPreview: this.render({ versions: ['7.3', '6.0'] }), - documentation, - keywords, }, - ] + } static defaultBadgeData = { label: 'sponge', diff --git a/services/ore/ore-stars.service.js b/services/ore/ore-stars.service.js index bdc226423b..276643dd98 100644 --- a/services/ore/ore-stars.service.js +++ b/services/ore/ore-stars.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { metric } from '../text-formatters.js' -import { BaseOreService, documentation, keywords } from './ore-base.js' +import { BaseOreService, description } from './ore-base.js' export default class OreStars extends BaseOreService { static category = 'rating' @@ -9,17 +10,18 @@ export default class OreStars extends BaseOreService { pattern: ':pluginId', } - static examples = [ - { - title: 'Ore Stars', - namedParams: { - pluginId: 'nucleus', + static openApi = { + '/ore/stars/{pluginId}': { + get: { + summary: 'Ore Stars', + description, + parameters: pathParams({ + name: 'pluginId', + example: 'nucleus', + }), }, - staticPreview: this.render({ stars: 1000 }), - documentation, - keywords, }, - ] + } static defaultBadgeData = { label: 'stars', diff --git a/services/ore/ore-version.service.js b/services/ore/ore-version.service.js index b59e7cdb8e..2f1f72b417 100644 --- a/services/ore/ore-version.service.js +++ b/services/ore/ore-version.service.js @@ -1,5 +1,6 @@ +import { pathParams } from '../index.js' import { renderVersionBadge } from '../version.js' -import { BaseOreService, documentation, keywords } from './ore-base.js' +import { BaseOreService, description } from './ore-base.js' export default class OreVersion extends BaseOreService { static category = 'version' @@ -9,17 +10,18 @@ export default class OreVersion extends BaseOreService { pattern: ':pluginId', } - static examples = [ - { - title: 'Ore Version', - namedParams: { - pluginId: 'nucleus', + static openApi = { + '/ore/v/{pluginId}': { + get: { + summary: 'Ore Version', + description, + parameters: pathParams({ + name: 'pluginId', + example: 'nucleus', + }), }, - staticPreview: renderVersionBadge({ version: '2.2.3' }), - documentation, - keywords, }, - ] + } static defaultBadgeData = { label: 'version',