From efd707eb65ed74b3e376e0178bd43270dccb7432 Mon Sep 17 00:00:00 2001 From: Pierce Thompson <52843537+Insprill@users.noreply.github.com> Date: Sat, 31 Dec 2022 07:24:31 -0800 Subject: [PATCH] Add [modrinth] game versions (#8673) * Add a Modrinth game versions badge * Require at least one game version * Code style Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com> --- services/modrinth/modrinth-base.js | 1 + .../modrinth-game-versions.service.js | 34 +++++++++++++++++++ .../modrinth/modrinth-game-versions.tester.js | 15 ++++++++ 3 files changed, 50 insertions(+) create mode 100644 services/modrinth/modrinth-game-versions.service.js create mode 100644 services/modrinth/modrinth-game-versions.tester.js diff --git a/services/modrinth/modrinth-base.js b/services/modrinth/modrinth-base.js index 0501e9067a..a26a95ce4b 100644 --- a/services/modrinth/modrinth-base.js +++ b/services/modrinth/modrinth-base.js @@ -11,6 +11,7 @@ const versionSchema = Joi.array() .items( Joi.object({ version_number: Joi.string().required(), + game_versions: Joi.array().items(Joi.string()).min(1).required(), }).required() ) .required() diff --git a/services/modrinth/modrinth-game-versions.service.js b/services/modrinth/modrinth-game-versions.service.js new file mode 100644 index 0000000000..88939d9371 --- /dev/null +++ b/services/modrinth/modrinth-game-versions.service.js @@ -0,0 +1,34 @@ +import { BaseModrinthService, documentation } from './modrinth-base.js' + +export default class ModrinthGameVersions extends BaseModrinthService { + static category = 'platform-support' + + static route = { + base: 'modrinth/game-versions', + 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 defaultBadgeData = { label: 'game versions' } + + static render({ versions }) { + return { + message: versions.join(' | '), + color: 'blue', + } + } + + async handle({ projectId }) { + const { 0: latest } = await this.fetchVersions({ projectId }) + const versions = latest.game_versions + return this.constructor.render({ versions }) + } +} diff --git a/services/modrinth/modrinth-game-versions.tester.js b/services/modrinth/modrinth-game-versions.tester.js new file mode 100644 index 0000000000..0a52d5cb82 --- /dev/null +++ b/services/modrinth/modrinth-game-versions.tester.js @@ -0,0 +1,15 @@ +import { createServiceTester } from '../tester.js' +import { withRegex } from '../test-validators.js' + +export const t = await createServiceTester() + +t.create('Game Versions') + .get('/AANobbMI.json') + .expectBadge({ + label: 'game versions', + message: withRegex(/\d+\.\d+(\.\d+)?( \| )?/), + }) + +t.create('Game Versions (not found)') + .get('/not-existing.json') + .expectBadge({ label: 'game versions', message: 'not found', color: 'red' }) -- GitLab