Files
shields/services/librariesio/librariesio-base.js
2021-11-17 20:00:29 +00:00

33 lines
1008 B
JavaScript

import Joi from 'joi'
import { anyInteger, nonNegativeInteger } from '../validators.js'
import { BaseJsonService } from '../index.js'
// API doc: https://libraries.io/api#project
const projectSchema = Joi.object({
platform: Joi.string().required(),
dependents_count: nonNegativeInteger,
dependent_repos_count: nonNegativeInteger,
rank: anyInteger,
}).required()
export default class LibrariesIoBase extends BaseJsonService {
constructor(context, config) {
super(context, config)
const { requestFetcher, librariesIoApiProvider } = context
this._requestFetcher = librariesIoApiProvider.fetch.bind(
librariesIoApiProvider,
requestFetcher
)
}
async fetchProject({ platform, scope, packageName }) {
return this._requestJson({
schema: projectSchema,
url: `/${encodeURIComponent(platform)}/${
scope ? encodeURIComponent(`${scope}/`) : ''
}${encodeURIComponent(packageName)}`,
errorMessages: { 404: 'package not found' },
})
}
}