Files
shields/services/fedora/fedora.service.js
chris48s 5d1ddbc3fe 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
2023-12-04 12:53:21 +00:00

62 lines
1.6 KiB
JavaScript

import Joi from 'joi'
import { renderVersionBadge } from '../version.js'
import { BaseJsonService, pathParams } from '../index.js'
const schema = Joi.object({
version: Joi.string().required(),
}).required()
// No way to permalink to current "stable", https://pagure.io/mdapi/issue/69
const defaultBranch = 'rawhide'
const description =
'See <a href="https://apps.fedoraproject.org/mdapi/">mdapi docs</a> for information on valid branches.'
export default class Fedora extends BaseJsonService {
static category = 'version'
static route = { base: 'fedora/v', pattern: ':packageName/:branch?' }
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' }
async handle({ packageName, branch = defaultBranch }) {
const data = await this._requestJson({
schema,
url: `https://apps.fedoraproject.org/mdapi/${encodeURIComponent(
branch,
)}/pkg/${encodeURIComponent(packageName)}`,
httpErrors: {
400: 'branch not found',
},
})
return renderVersionBadge({ version: data.version })
}
}