mirror of
https://github.com/badges/shields.git
synced 2025-04-18 19:44:04 +03:00
migrate examples
to openApi
part 3; affects [conan cookbook coverity cpan debian docker docsrs dub eclipse] (#9429)
* migrate some services from examples to openApi * improve and de-dupe service titles * revert changes to depfu
This commit is contained in:
parent
61b8446189
commit
478b1083f2
@ -1,3 +1,4 @@
|
||||
import { pathParams } from '../index.js'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import { ConditionalGithubAuthV3Service } from '../github/github-auth-service.js'
|
||||
import { fetchRepoContent } from '../github/github-common-fetch.js'
|
||||
@ -8,14 +9,17 @@ export default class ConanVersion extends ConditionalGithubAuthV3Service {
|
||||
|
||||
static route = { base: 'conan/v', pattern: ':packageName' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Conan Center',
|
||||
namedParams: { packageName: 'boost' },
|
||||
staticPreview: renderVersionBadge({ version: '1.78.0' }),
|
||||
keywords: ['c++'],
|
||||
static openApi = {
|
||||
'/conan/v/{packageName}': {
|
||||
get: {
|
||||
summary: 'Conan Center',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'boost',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'conan' }
|
||||
|
||||
|
@ -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() }).required()
|
||||
|
||||
@ -8,13 +8,17 @@ export default class Cookbook extends BaseJsonService {
|
||||
static category = 'version'
|
||||
static route = { base: 'cookbook/v', pattern: ':cookbook' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Chef cookbook',
|
||||
namedParams: { cookbook: 'chef-sugar' },
|
||||
staticPreview: renderVersionBadge({ version: '5.0.0' }),
|
||||
static openApi = {
|
||||
'/cookbook/v/{cookbook}': {
|
||||
get: {
|
||||
summary: 'Chef cookbook',
|
||||
parameters: pathParams({
|
||||
name: 'cookbook',
|
||||
example: 'chef-sugar',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'cookbook' }
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const messageRegex = /passed|passed .* new defects|pending|failed/
|
||||
const schema = Joi.object({
|
||||
@ -10,17 +10,17 @@ export default class CoverityScan extends BaseJsonService {
|
||||
static category = 'analysis'
|
||||
static route = { base: 'coverity/scan', pattern: ':projectId' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Coverity Scan',
|
||||
namedParams: {
|
||||
projectId: '3997',
|
||||
static openApi = {
|
||||
'/coverity/scan/{projectId}': {
|
||||
get: {
|
||||
summary: 'Coverity Scan',
|
||||
parameters: pathParams({
|
||||
name: 'projectId',
|
||||
example: '3997',
|
||||
}),
|
||||
},
|
||||
staticPreview: this.render({
|
||||
message: 'passed',
|
||||
}),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'coverity' }
|
||||
|
||||
|
@ -1,17 +1,21 @@
|
||||
import { pathParams } from '../index.js'
|
||||
import BaseCpanService from './cpan.js'
|
||||
|
||||
export default class CpanLicense extends BaseCpanService {
|
||||
static category = 'license'
|
||||
static route = { base: 'cpan/l', pattern: ':packageName' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'CPAN',
|
||||
namedParams: { packageName: 'Config-Augeas' },
|
||||
staticPreview: this.render({ license: 'lgpl_2_1' }),
|
||||
keywords: ['perl'],
|
||||
static openApi = {
|
||||
'/cpan/l/{packageName}': {
|
||||
get: {
|
||||
summary: 'CPAN License',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'Config-Augeas',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static render({ license }) {
|
||||
return {
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { pathParams } from '../index.js'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import BaseCpanService from './cpan.js'
|
||||
|
||||
@ -5,14 +6,17 @@ export default class CpanVersion extends BaseCpanService {
|
||||
static category = 'version'
|
||||
static route = { base: 'cpan/v', pattern: ':packageName' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'CPAN',
|
||||
namedParams: { packageName: 'Config-Augeas' },
|
||||
staticPreview: renderVersionBadge({ version: '1.000' }),
|
||||
keywords: ['perl'],
|
||||
static openApi = {
|
||||
'/cpan/v/{packageName}': {
|
||||
get: {
|
||||
summary: 'CPAN Version',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'Config-Augeas',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ packageName }) {
|
||||
const { version } = await this.fetch({ packageName })
|
||||
|
@ -1,6 +1,11 @@
|
||||
import Joi from 'joi'
|
||||
import { latest, renderVersionBadge } from '../version.js'
|
||||
import { BaseJsonService, NotFound, InvalidResponse } from '../index.js'
|
||||
import {
|
||||
BaseJsonService,
|
||||
NotFound,
|
||||
InvalidResponse,
|
||||
pathParams,
|
||||
} from '../index.js'
|
||||
|
||||
const schema = Joi.array()
|
||||
.items(
|
||||
@ -23,13 +28,32 @@ export default class Debian extends BaseJsonService {
|
||||
pattern: ':packageName/:distribution?',
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Debian package',
|
||||
namedParams: { packageName: 'apt', distribution: 'unstable' },
|
||||
staticPreview: renderVersionBadge({ version: '1.8.0' }),
|
||||
static openApi = {
|
||||
'/debian/v/{packageName}/{distribution}': {
|
||||
get: {
|
||||
summary: 'Debian package (for distribution)',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'packageName',
|
||||
example: 'apt',
|
||||
},
|
||||
{
|
||||
name: 'distribution',
|
||||
example: 'unstable',
|
||||
},
|
||||
),
|
||||
},
|
||||
},
|
||||
]
|
||||
'/debian/v/{packageName}': {
|
||||
get: {
|
||||
summary: 'Debian package',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'apt',
|
||||
}),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'debian' }
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
import {
|
||||
dockerBlue,
|
||||
buildDockerUrl,
|
||||
@ -13,16 +13,23 @@ const automatedBuildSchema = Joi.object({
|
||||
export default class DockerAutomatedBuild extends BaseJsonService {
|
||||
static category = 'build'
|
||||
static route = buildDockerUrl('automated')
|
||||
static examples = [
|
||||
{
|
||||
title: 'Docker Automated build',
|
||||
namedParams: {
|
||||
user: 'jrottenberg',
|
||||
repo: 'ffmpeg',
|
||||
static openApi = {
|
||||
'/docker/automated/{user}/{repo}': {
|
||||
get: {
|
||||
summary: 'Docker Automated build',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'user',
|
||||
example: 'jrottenberg',
|
||||
},
|
||||
{
|
||||
name: 'repo',
|
||||
example: 'ffmpeg',
|
||||
},
|
||||
),
|
||||
},
|
||||
staticPreview: this.render({ isAutomated: true }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static _cacheLength = 14400
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import Joi from 'joi'
|
||||
import { renderDownloadsBadge } from '../downloads.js'
|
||||
import { nonNegativeInteger } from '../validators.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
import {
|
||||
dockerBlue,
|
||||
buildDockerUrl,
|
||||
@ -15,16 +15,23 @@ const pullsSchema = Joi.object({
|
||||
export default class DockerPulls extends BaseJsonService {
|
||||
static category = 'downloads'
|
||||
static route = buildDockerUrl('pulls')
|
||||
static examples = [
|
||||
{
|
||||
title: 'Docker Pulls',
|
||||
namedParams: {
|
||||
user: '_',
|
||||
repo: 'ubuntu',
|
||||
static openApi = {
|
||||
'/docker/pulls/{user}/{repo}': {
|
||||
get: {
|
||||
summary: 'Docker Pulls',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'user',
|
||||
example: '_',
|
||||
},
|
||||
{
|
||||
name: 'repo',
|
||||
example: 'ubuntu',
|
||||
},
|
||||
),
|
||||
},
|
||||
staticPreview: this.render({ count: 765400000 }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static _cacheLength = 14400
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import Joi from 'joi'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import { nonNegativeInteger } from '../validators.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
import {
|
||||
dockerBlue,
|
||||
buildDockerUrl,
|
||||
@ -15,16 +15,23 @@ const schema = Joi.object({
|
||||
export default class DockerStars extends BaseJsonService {
|
||||
static category = 'rating'
|
||||
static route = buildDockerUrl('stars')
|
||||
static examples = [
|
||||
{
|
||||
title: 'Docker Stars',
|
||||
namedParams: {
|
||||
user: '_',
|
||||
repo: 'ubuntu',
|
||||
static openApi = {
|
||||
'/docker/stars/{user}/{repo}': {
|
||||
get: {
|
||||
summary: 'Docker Stars',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'user',
|
||||
example: '_',
|
||||
},
|
||||
{
|
||||
name: 'repo',
|
||||
example: 'ubuntu',
|
||||
},
|
||||
),
|
||||
},
|
||||
staticPreview: this.render({ stars: 9000 }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static _cacheLength = 14400
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const schema = Joi.object({
|
||||
doc_status: Joi.boolean().required(),
|
||||
@ -8,14 +8,32 @@ const schema = Joi.object({
|
||||
export default class DocsRs extends BaseJsonService {
|
||||
static category = 'build'
|
||||
static route = { base: 'docsrs', pattern: ':crate/:version?' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'docs.rs',
|
||||
namedParams: { crate: 'regex', version: 'latest' },
|
||||
staticPreview: this.render({ version: 'latest', docStatus: true }),
|
||||
keywords: ['rust'],
|
||||
static openApi = {
|
||||
'/docsrs/{crate}/{version}': {
|
||||
get: {
|
||||
summary: 'docs.rs (with version)',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'crate',
|
||||
example: 'regex',
|
||||
},
|
||||
{
|
||||
name: 'version',
|
||||
example: 'latest',
|
||||
},
|
||||
),
|
||||
},
|
||||
},
|
||||
]
|
||||
'/docsrs/{crate}': {
|
||||
get: {
|
||||
summary: 'docs.rs',
|
||||
parameters: pathParams({
|
||||
name: 'crate',
|
||||
example: 'regex',
|
||||
}),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'docs' }
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Joi from 'joi'
|
||||
import { renderLicenseBadge } from '../licenses.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const schema = Joi.object({
|
||||
info: Joi.object({ license: Joi.string().required() }).required(),
|
||||
@ -9,13 +9,17 @@ const schema = Joi.object({
|
||||
export default class DubLicense extends BaseJsonService {
|
||||
static category = 'license'
|
||||
static route = { base: 'dub/l', pattern: ':packageName' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'DUB',
|
||||
namedParams: { packageName: 'vibe-d' },
|
||||
staticPreview: renderLicenseBadge({ licenses: ['MIT'] }),
|
||||
static openApi = {
|
||||
'/dub/l/{packageName}': {
|
||||
get: {
|
||||
summary: 'DUB License',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'vibe-d',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'license' }
|
||||
|
||||
|
@ -1,19 +1,23 @@
|
||||
import Joi from 'joi'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const schema = Joi.string().required()
|
||||
|
||||
export default class DubVersion extends BaseJsonService {
|
||||
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 openApi = {
|
||||
'/dub/v/{packageName}': {
|
||||
get: {
|
||||
summary: 'DUB Version',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'vibe-d',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'dub' }
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { pathParams } from '../index.js'
|
||||
import { nonNegativeInteger } from '../validators.js'
|
||||
import EclipseMarketplaceBase from './eclipse-marketplace-base.js'
|
||||
|
||||
@ -13,13 +14,17 @@ const favoritesResponseSchema = Joi.object({
|
||||
export default class EclipseMarketplaceFavorites extends EclipseMarketplaceBase {
|
||||
static category = 'other'
|
||||
static route = this.buildRoute('eclipse-marketplace/favorites')
|
||||
static examples = [
|
||||
{
|
||||
title: 'Eclipse Marketplace',
|
||||
namedParams: { name: 'notepad4e' },
|
||||
staticPreview: this.render({ favorited: 55 }),
|
||||
static openApi = {
|
||||
'/eclipse-marketplace/favorites/{name}': {
|
||||
get: {
|
||||
summary: 'Eclipse Marketplace Favorites',
|
||||
parameters: pathParams({
|
||||
name: 'name',
|
||||
example: 'notepad4e',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'favorites' }
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { pathParams } from '../index.js'
|
||||
import EclipseMarketplaceBase from './eclipse-marketplace-base.js'
|
||||
|
||||
const licenseResponseSchema = Joi.object({
|
||||
@ -12,13 +13,17 @@ const licenseResponseSchema = Joi.object({
|
||||
export default class EclipseMarketplaceLicense extends EclipseMarketplaceBase {
|
||||
static category = 'license'
|
||||
static route = this.buildRoute('eclipse-marketplace/l')
|
||||
static examples = [
|
||||
{
|
||||
title: 'Eclipse Marketplace',
|
||||
namedParams: { name: 'notepad4e' },
|
||||
staticPreview: this.render({ license: 'GPL' }),
|
||||
static openApi = {
|
||||
'/eclipse-marketplace/l/{name}': {
|
||||
get: {
|
||||
summary: 'Eclipse Marketplace License',
|
||||
parameters: pathParams({
|
||||
name: 'name',
|
||||
example: 'notepad4e',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'license' }
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { pathParams } from '../index.js'
|
||||
import { formatDate } from '../text-formatters.js'
|
||||
import { age as ageColor } from '../color-formatters.js'
|
||||
import { nonNegativeInteger } from '../validators.js'
|
||||
@ -15,13 +16,17 @@ const updateResponseSchema = Joi.object({
|
||||
export default class EclipseMarketplaceUpdate extends EclipseMarketplaceBase {
|
||||
static category = 'activity'
|
||||
static route = this.buildRoute('eclipse-marketplace/last-update')
|
||||
static examples = [
|
||||
{
|
||||
title: 'Eclipse Marketplace',
|
||||
namedParams: { name: 'notepad4e' },
|
||||
staticPreview: this.render({ date: new Date().getTime() }),
|
||||
static openApi = {
|
||||
'/eclipse-marketplace/last-update/{name}': {
|
||||
get: {
|
||||
summary: 'Eclipse Marketplace Last Update',
|
||||
parameters: pathParams({
|
||||
name: 'name',
|
||||
example: 'notepad4e',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'updated' }
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { pathParams } from '../index.js'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import EclipseMarketplaceBase from './eclipse-marketplace-base.js'
|
||||
|
||||
@ -13,13 +14,17 @@ const versionResponseSchema = Joi.object({
|
||||
export default class EclipseMarketplaceVersion extends EclipseMarketplaceBase {
|
||||
static category = 'version'
|
||||
static route = this.buildRoute('eclipse-marketplace/v')
|
||||
static examples = [
|
||||
{
|
||||
title: 'Eclipse Marketplace',
|
||||
namedParams: { name: 'notepad4e' },
|
||||
staticPreview: this.render({ version: '1.0.1' }),
|
||||
static openApi = {
|
||||
'/eclipse-marketplace/v/{name}': {
|
||||
get: {
|
||||
summary: 'Eclipse Marketplace Version',
|
||||
parameters: pathParams({
|
||||
name: 'name',
|
||||
example: 'notepad4e',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'eclipse marketplace' }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user