Files
shields/services/eclipse-marketplace/eclipse-marketplace-update.service.js
chris48s 478b1083f2 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
2023-08-17 20:32:01 +00:00

49 lines
1.3 KiB
JavaScript

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'
import EclipseMarketplaceBase from './eclipse-marketplace-base.js'
const updateResponseSchema = Joi.object({
marketplace: Joi.object({
node: Joi.object({
changed: nonNegativeInteger,
}),
}),
}).required()
export default class EclipseMarketplaceUpdate extends EclipseMarketplaceBase {
static category = 'activity'
static route = this.buildRoute('eclipse-marketplace/last-update')
static openApi = {
'/eclipse-marketplace/last-update/{name}': {
get: {
summary: 'Eclipse Marketplace Last Update',
parameters: pathParams({
name: 'name',
example: 'notepad4e',
}),
},
},
}
static defaultBadgeData = { label: 'updated' }
static render({ date }) {
return {
message: formatDate(date),
color: ageColor(date),
}
}
async handle({ name }) {
const { marketplace } = await this.fetch({
name,
schema: updateResponseSchema,
})
const date = 1000 * parseInt(marketplace.node.changed)
return this.constructor.render({ date })
}
}