Files
shields/services/conda/conda-downloads.service.js
chris48s bd288db3a4 migrate examples to openApi part 18; affects [conda feedz gem openvsx readthedocs] github (#9607)
* migrate some services from examples to openApi

* fixup which --> variant param rename

* improve descriptions

* migrate gem version

* improve descriptions for ruby gems

* standardise on packageName for all conda badges
2023-12-23 18:19:15 +00:00

49 lines
1.3 KiB
JavaScript

import { pathParams } from '../index.js'
import { renderDownloadsBadge } from '../downloads.js'
import BaseCondaService from './conda-base.js'
export default class CondaDownloads extends BaseCondaService {
static category = 'downloads'
static route = {
base: 'conda',
pattern: ':variant(d|dn)/:channel/:packageName',
}
static openApi = {
'/conda/{variant}/{channel}/{packageName}': {
get: {
summary: 'Conda Downloads',
parameters: pathParams(
{
name: 'variant',
example: 'dn',
schema: { type: 'string', enum: this.getEnum('variant') },
},
{
name: 'channel',
example: 'conda-forge',
},
{
name: 'packageName',
example: 'python',
},
),
},
},
}
static render({ variant, downloads }) {
const labelOverride = variant === 'dn' ? 'downloads' : 'conda|downloads'
return renderDownloadsBadge({ downloads, labelOverride })
}
async handle({ variant, channel, packageName }) {
const json = await this.fetch({ channel, packageName })
const downloads = json.files.reduce(
(total, file) => total + file.ndownloads,
0,
)
return this.constructor.render({ variant, downloads })
}
}