1
0
mirror of https://github.com/badges/shields.git synced 2025-04-18 19:44:04 +03:00
shields/services/pypi/pypi-implementation.service.js
Leo Q e8671be7f2
support setting pypiBaseUrl by environment variables and queryParameters; affects [pypi] (#10044)
* support setting pypiBaseUrl by environment variables

* Add support for pypiBaseUrl configuration

* Update Pypi services to include pypiBaseUrl parameter

* change package name example to a more well-known package

* Update custom-environment-variables.yml

* Update Pypi services to include pypiBaseUrl parameter

* fix openapi mismatch

* Update doc/server-secrets.md

---------

Co-authored-by: chris48s <chris48s@users.noreply.github.com>
2024-04-21 16:33:42 +00:00

42 lines
1.0 KiB
JavaScript

import PypiBase, { pypiGeneralParams } from './pypi-base.js'
import { parseClassifiers } from './pypi-helpers.js'
export default class PypiImplementation extends PypiBase {
static category = 'platform-support'
static route = this.buildRoute('pypi/implementation')
static openApi = {
'/pypi/implementation/{packageName}': {
get: {
summary: 'PyPI - Implementation',
parameters: pypiGeneralParams,
},
},
}
static defaultBadgeData = { label: 'implementation' }
static render({ implementations }) {
return {
message: implementations.sort().join(' | '),
color: 'blue',
}
}
async handle({ egg }, { pypiBaseUrl }) {
const packageData = await this.fetch({ egg, pypiBaseUrl })
let implementations = parseClassifiers(
packageData,
/^Programming Language :: Python :: Implementation :: (\S+)$/,
)
if (implementations.length === 0) {
// Assume CPython.
implementations = ['cpython']
}
return this.constructor.render({ implementations })
}
}