Files
shields/services/puppetforge/puppetforge-module-feedback.service.js
T
chris48sandGitHub 83c3c70908 refactor [puppetforge] service, add tests (#3275)
This migrates the puppetforge-modules from legacy
services to the new service arch
There are also some changes to the puppetforge-users
badges, but its just moving code around
2019-04-07 19:35:30 +01:00

53 lines
1.2 KiB
JavaScript

'use strict'
const { NotFound } = require('..')
const {
coveragePercentage: coveragePercentageColor,
} = require('../color-formatters')
const { BasePuppetForgeModulesService } = require('./puppetforge-base')
module.exports = class PuppetforgeModuleFeedback extends BasePuppetForgeModulesService {
static get category() {
return 'rating'
}
static get route() {
return {
base: 'puppetforge/f',
pattern: ':user/:moduleName',
}
}
static get examples() {
return [
{
title: 'Puppet Forge feedback score',
namedParams: {
user: 'camptocamp',
moduleName: 'openssl',
},
staticPreview: this.render({ score: 61 }),
},
]
}
static get defaultBadgeData() {
return { label: 'score' }
}
static render({ score }) {
return {
message: `${score}%`,
color: coveragePercentageColor(score),
}
}
async handle({ user, moduleName }) {
const data = await this.fetch({ user, moduleName })
if (data.feedback_score == null) {
throw new NotFound({ prettyMessage: 'unknown' })
}
return this.constructor.render({ score: data.feedback_score })
}
}