* update crates service test * migrate some services from examples to openApi * migrate crates from examples to openApi, improve titles * explain what hd,hw,hm,hy actually mean * improve descriptions
37 lines
977 B
JavaScript
37 lines
977 B
JavaScript
import { renderVersionBadge } from '../version.js'
|
|
import { InvalidResponse, pathParams } from '../index.js'
|
|
import { BaseCratesService, description } from './crates-base.js'
|
|
|
|
export default class CratesVersion extends BaseCratesService {
|
|
static category = 'version'
|
|
static route = { base: 'crates/v', pattern: ':crate' }
|
|
|
|
static openApi = {
|
|
'/crates/v/{crate}': {
|
|
get: {
|
|
summary: 'Crates.io Version',
|
|
description,
|
|
parameters: pathParams({
|
|
name: 'crate',
|
|
example: 'rustc-serialize',
|
|
}),
|
|
},
|
|
},
|
|
}
|
|
|
|
transform(json) {
|
|
if (json.errors) {
|
|
throw new InvalidResponse({ prettyMessage: json.errors[0].detail })
|
|
}
|
|
return json.crate.max_stable_version
|
|
? json.crate.max_stable_version
|
|
: json.crate.max_version
|
|
}
|
|
|
|
async handle({ crate }) {
|
|
const json = await this.fetch({ crate })
|
|
const version = this.transform(json)
|
|
return renderVersionBadge({ version })
|
|
}
|
|
}
|