Skip to content
Snippets Groups Projects
Commit aed39bfd authored by Emlyn Corrin's avatar Emlyn Corrin Committed by chris48s
Browse files

[Clojars] Add downloads badge (#2305)

Add Clojars downloads badge
parent 83e44b7e
No related branches found
No related tags found
No related merge requests found
'use strict'
const Joi = require('joi')
const BaseJsonService = require('../base-json')
const { metric } = require('../../lib/text-formatters')
const { nonNegativeInteger } = require('../validators')
const { downloadCount: downloadsColor } = require('../../lib/color-formatters')
const clojarsSchema = Joi.object({
downloads: nonNegativeInteger,
}).required()
module.exports = class Clojars extends BaseJsonService {
async fetch({ clojar }) {
const url = `https://clojars.org/api/artifacts/${clojar}`
return this._requestJson({
url,
schema: clojarsSchema,
})
}
static render({ downloads }) {
return {
label: 'downloads',
message: metric(downloads),
color: downloadsColor(downloads),
}
}
async handle({ clojar }) {
const json = await this.fetch({ clojar })
return this.constructor.render({ downloads: json.downloads })
}
// Metadata
static get defaultBadgeData() {
return { label: 'downloads' }
}
static get category() {
return 'downloads'
}
static get route() {
return {
base: 'clojars/dt',
format: '(.+)',
capture: ['clojar'],
}
}
static get examples() {
return [
{
exampleUrl: 'prismic',
urlPattern: ':package',
staticExample: this.render({ downloads: 117 }),
},
]
}
}
'use strict'
const Joi = require('joi')
const createServiceTester = require('../create-service-tester')
const { isMetric } = require('../test-validators')
const t = createServiceTester()
module.exports = t
t.create('clojars downloads (valid)')
.get('/prismic.json')
.expectJSONTypes(
Joi.object().keys({
name: 'downloads',
value: isMetric,
})
)
t.create('clojars downloads (not found)')
.get('/not-a-package.json')
.expectJSON({ name: 'downloads', value: 'not found' })
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment