Files
shields/services/repology/repology-repositories.service.js
chris48s 692829f91c migrate examples to openApi part 6; affects [opencollective opm ossf powershell pub pypi reddit repology] (#9462)
* migrate some services from examples to openApi

* improve and de-dupe service titles
2023-08-19 04:33:27 +00:00

50 lines
1.1 KiB
JavaScript

import Joi from 'joi'
import { metric } from '../text-formatters.js'
import { nonNegativeInteger } from '../validators.js'
import { BaseSvgScrapingService, pathParams } from '../index.js'
const schema = Joi.object({
message: nonNegativeInteger,
}).required()
export default class RepologyRepositories extends BaseSvgScrapingService {
static category = 'platform-support'
static route = {
base: 'repology/repositories',
pattern: ':projectName',
}
static openApi = {
'/repology/repositories/{projectName}': {
get: {
summary: 'Repology - Repositories',
parameters: pathParams({
name: 'projectName',
example: 'starship',
}),
},
},
}
static defaultBadgeData = {
label: 'repositories',
color: 'blue',
}
static render({ repositoryCount }) {
return {
message: metric(repositoryCount),
}
}
async handle({ projectName }) {
const { message: repositoryCount } = await this._requestSvg({
schema,
url: `https://repology.org/badge/tiny-repos/${projectName}.svg`,
})
return this.constructor.render({ repositoryCount })
}
}