diff --git a/services/pkgreview/package-rating.service.js b/services/pkgreview/package-rating.service.js index 25dbe0cba4bd5..bb90bb3bdc55f 100644 --- a/services/pkgreview/package-rating.service.js +++ b/services/pkgreview/package-rating.service.js @@ -1,83 +1,11 @@ -import Joi from 'joi' -import { starRating, metric } from '../text-formatters.js' -import { colorScale } from '../color-formatters.js' -import { nonNegativeInteger } from '../validators.js' -import { BaseJsonService } from '../index.js' +import { deprecatedService } from '../index.js' -const pkgReviewColor = colorScale([2, 3, 4]) - -const schema = Joi.object({ - rating: Joi.number().min(0).max(1).precision(1).required().allow(null), - reviewsCount: nonNegativeInteger, -}).required() - -// Repository for this service is: https://github.com/iqubex-technologies/pkgreview.dev -// Internally the service leverages the npms.io API (https://api.npms.io/v2) -export default class PkgreviewRating extends BaseJsonService { - static category = 'rating' - - static route = { +export default deprecatedService({ + category: 'rating', + route: { base: 'pkgreview', - pattern: ':format(rating|stars)/:pkgManager(npm)/:pkgSlug+', - } - - static examples = [ - { - title: 'pkgreview.dev Package Ratings', - pattern: 'rating/:pkgManager/:pkgSlug+', - namedParams: { pkgManager: 'npm', pkgSlug: 'react' }, - staticPreview: this.render({ - format: 'rating', - rating: 3.5, - reviewsCount: 237, - }), - }, - { - title: 'pkgreview.dev Star Ratings', - pattern: 'stars/:pkgManager/:pkgSlug+', - namedParams: { pkgManager: 'npm', pkgSlug: 'react' }, - staticPreview: this.render({ - format: 'stars', - rating: 1.5, - reviewsCount: 200, - }), - }, - ] - - static render({ rating, reviewsCount, format }) { - const message = - format === 'rating' - ? `${+parseFloat(rating).toFixed(1)}/5 (${metric(reviewsCount)})` - : starRating(rating) - - return { - message, - label: format, - color: pkgReviewColor(rating), - } - } - - async fetch({ pkgManager, pkgSlug }) { - return this._requestJson({ - schema, - url: `https://pkgreview.now.sh/api/v1/${pkgManager}/${encodeURIComponent( - pkgSlug - )}`, - errorMessages: { - 404: 'package not found', - }, - }) - } - - async handle({ format, pkgManager, pkgSlug }) { - const { reviewsCount, rating } = await this.fetch({ - pkgManager, - pkgSlug, - }) - return this.constructor.render({ - reviewsCount, - format, - rating: rating * 5, - }) - } -} + pattern: ':various*', + }, + label: 'pkgreview', + dateAdded: new Date('2022-10-07'), +}) diff --git a/services/pkgreview/package-rating.tester.js b/services/pkgreview/package-rating.tester.js index ad4b483e56d7c..4672540ff64b1 100644 --- a/services/pkgreview/package-rating.tester.js +++ b/services/pkgreview/package-rating.tester.js @@ -1,23 +1,15 @@ -import { withRegex, isStarRating } from '../test-validators.js' -import { createServiceTester } from '../tester.js' -export const t = await createServiceTester() +import { ServiceTester } from '../tester.js' -const isRatingWithReviews = withRegex( - /^(([0-4](.?([0-9]))?)|5)\/5?\s*\([0-9]*\)$/ -) +export const t = new ServiceTester({ + id: 'pkgreview', + title: 'PkgReview', + pathPrefix: '/pkgreview', +}) -t.create('Stars Badge renders') +t.create('Stars Badge') .get('/stars/npm/react.json') - .expectBadge({ label: 'stars', message: isStarRating }) + .expectBadge({ label: 'pkgreview', message: 'no longer available' }) -t.create('Rating Badge renders') +t.create('Rating Badge') .get('/rating/npm/react.json') - .expectBadge({ label: 'rating', message: isRatingWithReviews }) - -t.create('nonexistent package') - .get('/rating/npm/ohlolweallknowthispackagewontexist.json') - .expectBadge({ - label: 'rating', - message: 'package not found', - color: 'red', - }) + .expectBadge({ label: 'pkgreview', message: 'no longer available' })