mirror of
https://github.com/badges/shields.git
synced 2025-04-18 19:44:04 +03:00
migrate examples
to openApi
part 4; affects [ecologi elm flathub gem gitter GithubTotalDiscussions greasyfork hackage hackernews homebrew] (#9430)
* migrate some services from examples to openApi * improve and de-dupe service titles * revert changes to homebrew
This commit is contained in:
parent
ad359a260c
commit
6823d38ddf
@ -1,7 +1,7 @@
|
||||
import Joi from 'joi'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import { floorCount } from '../color-formatters.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const apiSchema = Joi.object({
|
||||
total: Joi.number().positive().required(),
|
||||
@ -10,13 +10,17 @@ const apiSchema = Joi.object({
|
||||
export default class EcologiCarbonOffset extends BaseJsonService {
|
||||
static category = 'other'
|
||||
static route = { base: 'ecologi/carbon', pattern: ':username' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'Ecologi (Carbon Offset)',
|
||||
namedParams: { username: 'ecologi' },
|
||||
staticPreview: this.render({ count: 15.05 }),
|
||||
static openApi = {
|
||||
'/ecologi/carbon/{username}': {
|
||||
get: {
|
||||
summary: 'Ecologi (Carbon Offset)',
|
||||
parameters: pathParams({
|
||||
name: 'username',
|
||||
example: 'ecologi',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'carbon offset' }
|
||||
|
||||
|
@ -2,7 +2,7 @@ import Joi from 'joi'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import { floorCount } from '../color-formatters.js'
|
||||
import { nonNegativeInteger } from '../validators.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const apiSchema = Joi.object({
|
||||
total: nonNegativeInteger,
|
||||
@ -11,13 +11,17 @@ const apiSchema = Joi.object({
|
||||
export default class EcologiTrees extends BaseJsonService {
|
||||
static category = 'other'
|
||||
static route = { base: 'ecologi/trees', pattern: ':username' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'Ecologi (Trees)',
|
||||
namedParams: { username: 'ecologi' },
|
||||
staticPreview: this.render({ count: 250 }),
|
||||
static openApi = {
|
||||
'/ecologi/trees/{username}': {
|
||||
get: {
|
||||
summary: 'Ecologi (Trees)',
|
||||
parameters: pathParams({
|
||||
name: 'username',
|
||||
example: 'ecologi',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'trees' }
|
||||
|
||||
|
@ -1,20 +1,30 @@
|
||||
import Joi from 'joi'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import { semver } from '../validators.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const schema = Joi.object({ version: semver }).required()
|
||||
|
||||
export default class ElmPackage extends BaseJsonService {
|
||||
static category = 'version'
|
||||
static route = { base: 'elm-package/v', pattern: ':user/:packageName' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'Elm package',
|
||||
namedParams: { user: 'elm', packageName: 'core' },
|
||||
staticPreview: this.render({ version: '1.0.2' }),
|
||||
static openApi = {
|
||||
'/elm-package/v/{user}/{packageName}': {
|
||||
get: {
|
||||
summary: 'Elm package',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'user',
|
||||
example: 'elm',
|
||||
},
|
||||
{
|
||||
name: 'packageName',
|
||||
example: 'core',
|
||||
},
|
||||
),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'elm package' }
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import Joi from 'joi'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
import { renderDownloadsBadge } from '../downloads.js'
|
||||
|
||||
const schema = Joi.object({
|
||||
@ -9,15 +9,17 @@ const schema = Joi.object({
|
||||
export default class FlathubDownloads extends BaseJsonService {
|
||||
static category = 'downloads'
|
||||
static route = { base: 'flathub/downloads', pattern: ':packageName' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'Flathub',
|
||||
namedParams: {
|
||||
packageName: 'org.mozilla.firefox',
|
||||
static openApi = {
|
||||
'/flathub/downloads/{packageName}': {
|
||||
get: {
|
||||
summary: 'Flathub Downloads',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'org.mozilla.firefox',
|
||||
}),
|
||||
},
|
||||
staticPreview: renderDownloadsBadge({ downloads: '277136' }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'installs' }
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Joi from 'joi'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import { BaseJsonService, NotFound } from '../index.js'
|
||||
import { BaseJsonService, NotFound, pathParams } from '../index.js'
|
||||
|
||||
const schema = Joi.alternatives()
|
||||
.try(
|
||||
@ -14,15 +14,17 @@ const schema = Joi.alternatives()
|
||||
export default class Flathub extends BaseJsonService {
|
||||
static category = 'version'
|
||||
static route = { base: 'flathub/v', pattern: ':packageName' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'Flathub',
|
||||
namedParams: {
|
||||
packageName: 'org.mozilla.firefox',
|
||||
static openApi = {
|
||||
'/flathub/v/{packageName}': {
|
||||
get: {
|
||||
summary: 'Flathub Version',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'org.mozilla.firefox',
|
||||
}),
|
||||
},
|
||||
staticPreview: renderVersionBadge({ version: '78.0.2' }),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'flathub' }
|
||||
|
||||
|
@ -1,21 +1,24 @@
|
||||
import Joi from 'joi'
|
||||
import { floorCount as floorCountColor } from '../color-formatters.js'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import { BaseJsonService } from '../index.js'
|
||||
import { BaseJsonService, pathParams } from '../index.js'
|
||||
|
||||
const ownerSchema = Joi.array().required()
|
||||
|
||||
export default class GemOwner extends BaseJsonService {
|
||||
static category = 'other'
|
||||
static route = { base: 'gem/u', pattern: ':user' }
|
||||
static examples = [
|
||||
{
|
||||
title: 'Gems',
|
||||
namedParams: { user: 'raphink' },
|
||||
staticPreview: this.render({ count: 34 }),
|
||||
keywords: ['ruby'],
|
||||
static openApi = {
|
||||
'/gem/u/{user}': {
|
||||
get: {
|
||||
summary: 'Gem Owner',
|
||||
parameters: pathParams({
|
||||
name: 'user',
|
||||
example: 'raphink',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'gems' }
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
import gql from 'graphql-tag'
|
||||
import Joi from 'joi'
|
||||
import { pathParams } from '../index.js'
|
||||
import { nonNegativeInteger } from '../validators.js'
|
||||
import { GithubAuthV4Service } from './github-auth-service.js'
|
||||
import { transformErrors } from './github-helpers.js'
|
||||
@ -21,18 +22,23 @@ export default class GithubTotalDiscussions extends GithubAuthV4Service {
|
||||
pattern: ':user/:repo',
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'GitHub Discussions',
|
||||
namedParams: {
|
||||
user: 'vercel',
|
||||
repo: 'next.js',
|
||||
static openApi = {
|
||||
'/github/discussions/{user}/{repo}': {
|
||||
get: {
|
||||
summary: 'GitHub Discussions',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'user',
|
||||
example: 'vercel',
|
||||
},
|
||||
{
|
||||
name: 'repo',
|
||||
example: 'next.js',
|
||||
},
|
||||
),
|
||||
},
|
||||
staticPreview: this.render({
|
||||
discussions: '6000 total',
|
||||
}),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'discussions', color: 'blue' }
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BaseStaticService } from '../index.js'
|
||||
import { BaseStaticService, pathParams } from '../index.js'
|
||||
|
||||
export default class Gitter extends BaseStaticService {
|
||||
static category = 'chat'
|
||||
@ -8,16 +8,23 @@ export default class Gitter extends BaseStaticService {
|
||||
pattern: ':user/:repo',
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Gitter',
|
||||
namedParams: {
|
||||
user: 'nwjs',
|
||||
repo: 'nw.js',
|
||||
static openApi = {
|
||||
'/gitter/room/{user}/{repo}': {
|
||||
get: {
|
||||
summary: 'Gitter',
|
||||
parameters: pathParams(
|
||||
{
|
||||
name: 'user',
|
||||
example: 'nwjs',
|
||||
},
|
||||
{
|
||||
name: 'repo',
|
||||
example: 'nw.js',
|
||||
},
|
||||
),
|
||||
},
|
||||
staticPreview: this.render(),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'chat' }
|
||||
|
||||
|
@ -1,18 +1,22 @@
|
||||
import { renderLicenseBadge } from '../licenses.js'
|
||||
import { InvalidResponse } from '../index.js'
|
||||
import { InvalidResponse, pathParams } from '../index.js'
|
||||
import BaseGreasyForkService from './greasyfork-base.js'
|
||||
|
||||
export default class GreasyForkLicense extends BaseGreasyForkService {
|
||||
static category = 'license'
|
||||
static route = { base: 'greasyfork', pattern: 'l/:scriptId' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Greasy Fork',
|
||||
namedParams: { scriptId: '407466' },
|
||||
staticPreview: renderLicenseBadge({ licenses: ['MIT'] }),
|
||||
static openApi = {
|
||||
'/greasyfork/l/{scriptId}': {
|
||||
get: {
|
||||
summary: 'Greasy Fork License',
|
||||
parameters: pathParams({
|
||||
name: 'scriptId',
|
||||
example: '407466',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'license' }
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { pathParams } from '../index.js'
|
||||
import { floorCount as floorCountColor } from '../color-formatters.js'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import BaseGreasyForkService from './greasyfork-base.js'
|
||||
@ -6,13 +7,17 @@ export default class GreasyForkRatingCount extends BaseGreasyForkService {
|
||||
static category = 'rating'
|
||||
static route = { base: 'greasyfork', pattern: 'rating-count/:scriptId' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Greasy Fork',
|
||||
namedParams: { scriptId: '407466' },
|
||||
staticPreview: this.render({ good: 17, ok: 2, bad: 3 }),
|
||||
static openApi = {
|
||||
'/greasyfork/rating-count/{scriptId}': {
|
||||
get: {
|
||||
summary: 'Greasy Fork Rating',
|
||||
parameters: pathParams({
|
||||
name: 'scriptId',
|
||||
example: '407466',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'rating' }
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { pathParams } from '../index.js'
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import BaseGreasyForkService from './greasyfork-base.js'
|
||||
|
||||
@ -5,13 +6,17 @@ export default class GreasyForkVersion extends BaseGreasyForkService {
|
||||
static category = 'version'
|
||||
static route = { base: 'greasyfork', pattern: 'v/:scriptId' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Greasy Fork',
|
||||
namedParams: { scriptId: '407466' },
|
||||
staticPreview: renderVersionBadge({ version: '3.9.3' }),
|
||||
static openApi = {
|
||||
'/greasyfork/v/{scriptId}': {
|
||||
get: {
|
||||
summary: 'Greasy Fork Version',
|
||||
parameters: pathParams({
|
||||
name: 'scriptId',
|
||||
example: '407466',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
async handle({ scriptId }) {
|
||||
const data = await this.fetch({ scriptId })
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BaseService } from '../index.js'
|
||||
import { BaseService, pathParams } from '../index.js'
|
||||
|
||||
export default class HackageDeps extends BaseService {
|
||||
static category = 'dependencies'
|
||||
@ -8,13 +8,17 @@ export default class HackageDeps extends BaseService {
|
||||
pattern: ':packageName',
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Hackage-Deps',
|
||||
namedParams: { packageName: 'lens' },
|
||||
staticPreview: this.render({ isOutdated: false }),
|
||||
static openApi = {
|
||||
'/hackage-deps/v/{packageName}': {
|
||||
get: {
|
||||
summary: 'Hackage Dependencies',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'lens',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'dependencies' }
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { renderVersionBadge } from '../version.js'
|
||||
import { BaseService, InvalidResponse } from '../index.js'
|
||||
import { BaseService, InvalidResponse, pathParams } from '../index.js'
|
||||
|
||||
export default class HackageVersion extends BaseService {
|
||||
static category = 'version'
|
||||
@ -9,13 +9,17 @@ export default class HackageVersion extends BaseService {
|
||||
pattern: ':packageName',
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'Hackage',
|
||||
namedParams: { packageName: 'lens' },
|
||||
staticPreview: renderVersionBadge({ version: '4.1.7' }),
|
||||
static openApi = {
|
||||
'/hackage/v/{packageName}': {
|
||||
get: {
|
||||
summary: 'Hackage Version',
|
||||
parameters: pathParams({
|
||||
name: 'packageName',
|
||||
example: 'lens',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'hackage' }
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Joi from 'joi'
|
||||
import { metric } from '../text-formatters.js'
|
||||
import { BaseJsonService, NotFound } from '../index.js'
|
||||
import { BaseJsonService, NotFound, pathParams } from '../index.js'
|
||||
import { anyInteger } from '../validators.js'
|
||||
|
||||
const schema = Joi.object({
|
||||
@ -17,13 +17,17 @@ export default class HackerNewsUserKarma extends BaseJsonService {
|
||||
pattern: ':id',
|
||||
}
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'HackerNews User Karma',
|
||||
namedParams: { id: 'pg' },
|
||||
staticPreview: this.render({ id: 'pg', karma: 15536 }),
|
||||
static openApi = {
|
||||
'/hackernews/user-karma/{id}': {
|
||||
get: {
|
||||
summary: 'HackerNews User Karma',
|
||||
parameters: pathParams({
|
||||
name: 'id',
|
||||
example: 'pg',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = {
|
||||
label: 'Karma',
|
||||
|
@ -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(),
|
||||
@ -10,13 +10,17 @@ export default class HomebrewCask extends BaseJsonService {
|
||||
static category = 'version'
|
||||
static route = { base: 'homebrew/cask/v', pattern: ':cask' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'homebrew cask',
|
||||
namedParams: { cask: 'iterm2' },
|
||||
staticPreview: renderVersionBadge({ version: 'v3.2.5' }),
|
||||
static openApi = {
|
||||
'/homebrew/cask/v/{cask}': {
|
||||
get: {
|
||||
summary: 'homebrew cask',
|
||||
parameters: pathParams({
|
||||
name: 'cask',
|
||||
example: 'iterm2',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'homebrew cask' }
|
||||
|
||||
|
@ -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({
|
||||
versions: Joi.object({
|
||||
@ -13,13 +13,17 @@ export default class HomebrewVersion extends BaseJsonService {
|
||||
|
||||
static route = { base: 'homebrew/v', pattern: ':formula' }
|
||||
|
||||
static examples = [
|
||||
{
|
||||
title: 'homebrew version',
|
||||
namedParams: { formula: 'cake' },
|
||||
staticPreview: renderVersionBadge({ version: 'v0.32.0' }),
|
||||
static openApi = {
|
||||
'/homebrew/v/{formula}': {
|
||||
get: {
|
||||
summary: 'homebrew version',
|
||||
parameters: pathParams({
|
||||
name: 'formula',
|
||||
example: 'cake',
|
||||
}),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
static defaultBadgeData = { label: 'homebrew' }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user