* update packages * add plugin to strip autolinks in code blocks * fix all the documentation for MDXv3 * remove check-docusaurus-versions in docusaurus 3 this is now a hard error, not just a warning * port upstream change to Curl component fixes performing the 'execute' action when pressing enter
94 lines
2.5 KiB
JavaScript
94 lines
2.5 KiB
JavaScript
import Joi from 'joi'
|
|
import qs from 'qs'
|
|
import { nonNegativeInteger } from '../validators.js'
|
|
import { BaseJsonService, NotFound } from '../index.js'
|
|
|
|
const stringOrFalse = Joi.alternatives(Joi.string(), Joi.bool())
|
|
|
|
const themeSchema = Joi.object()
|
|
.keys({
|
|
version: Joi.string().required(),
|
|
rating: nonNegativeInteger,
|
|
num_ratings: nonNegativeInteger,
|
|
downloaded: nonNegativeInteger,
|
|
active_installs: nonNegativeInteger,
|
|
last_updated: Joi.string().required(),
|
|
requires_php: stringOrFalse.required(),
|
|
requires: stringOrFalse.required(),
|
|
})
|
|
.required()
|
|
|
|
const pluginSchema = Joi.object()
|
|
.keys({
|
|
version: Joi.string().required(),
|
|
rating: nonNegativeInteger,
|
|
num_ratings: nonNegativeInteger,
|
|
downloaded: nonNegativeInteger,
|
|
active_installs: nonNegativeInteger,
|
|
requires: stringOrFalse.required(),
|
|
tested: Joi.string().required(),
|
|
last_updated: Joi.string().required(),
|
|
requires_php: stringOrFalse.required(),
|
|
})
|
|
.required()
|
|
|
|
const notFoundSchema = Joi.object()
|
|
.keys({
|
|
error: Joi.string().required(),
|
|
})
|
|
.required()
|
|
|
|
const pluginSchemas = Joi.alternatives(pluginSchema, notFoundSchema)
|
|
const themeSchemas = Joi.alternatives(themeSchema, notFoundSchema)
|
|
|
|
export class BaseWordpress extends BaseJsonService {
|
|
async fetch({ extensionType, slug }) {
|
|
const url = `https://api.wordpress.org/${extensionType}s/info/1.2/`
|
|
let schemas
|
|
if (extensionType === 'plugin') {
|
|
schemas = pluginSchemas
|
|
} else if (extensionType === 'theme') {
|
|
schemas = themeSchemas
|
|
}
|
|
|
|
const queryString = qs.stringify(
|
|
{
|
|
action: `${extensionType}_information`,
|
|
request: {
|
|
slug,
|
|
fields: {
|
|
active_installs: 1,
|
|
sections: 0,
|
|
homepage: 0,
|
|
tags: 0,
|
|
screenshot_url: 0,
|
|
downloaded: 1,
|
|
last_updated: 1,
|
|
requires_php: 1,
|
|
},
|
|
},
|
|
},
|
|
{ encode: false },
|
|
)
|
|
|
|
const json = await this._requestJson({
|
|
url,
|
|
schema: schemas,
|
|
options: {
|
|
searchParams: queryString,
|
|
},
|
|
})
|
|
if ('error' in json) {
|
|
throw new NotFound()
|
|
}
|
|
return json
|
|
}
|
|
}
|
|
|
|
export const description = `
|
|
These badges rely on an API that is no longer supported by Wordpress. You are
|
|
still free to use them, simply bear in mind that Shields.io cannot guarantee
|
|
that they'll keep on working in the future. Please also double-check the
|
|
provided slug, as an incorrect value may lead to unexpected results.
|
|
`
|