1
0
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:
chris48s 2023-08-17 21:32:01 +01:00 committed by GitHub
parent 61b8446189
commit 478b1083f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 225 additions and 118 deletions

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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 {

View File

@ -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 })

View File

@ -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' }

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }