From 6f2c0a22e9a42b1e1e56d184afccdab5e7923245 Mon Sep 17 00:00:00 2001 From: hymbz Date: Tue, 17 Oct 2023 02:45:09 +0800 Subject: [PATCH] fix greasyfork 404 bug (#9632) --- services/greasyfork/greasyfork-base.js | 18 +++++++++++++----- .../greasyfork/greasyfork-downloads.tester.js | 4 ++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/services/greasyfork/greasyfork-base.js b/services/greasyfork/greasyfork-base.js index a9c474647c4a2..ff1ae77394836 100644 --- a/services/greasyfork/greasyfork-base.js +++ b/services/greasyfork/greasyfork-base.js @@ -1,6 +1,6 @@ import Joi from 'joi' import { nonNegativeInteger } from '../validators.js' -import { BaseJsonService } from '../index.js' +import { BaseJsonService, NotFound } from '../index.js' const schema = Joi.object({ daily_installs: nonNegativeInteger, @@ -16,9 +16,17 @@ export default class BaseGreasyForkService extends BaseJsonService { static defaultBadgeData = { label: 'greasy fork' } async fetch({ scriptId }) { - return this._requestJson({ - schema, - url: `https://greasyfork.org/scripts/${scriptId}.json`, - }) + try { + return await this._requestJson({ + schema, + url: `https://greasyfork.org/scripts/${scriptId}.json`, + }) + } catch (e) { + if (!(e instanceof NotFound)) throw e + return this._requestJson({ + schema, + url: `https://sleazyfork.org/scripts/${scriptId}.json`, + }) + } } } diff --git a/services/greasyfork/greasyfork-downloads.tester.js b/services/greasyfork/greasyfork-downloads.tester.js index dc69e7c1cbaf3..ad8102e844415 100644 --- a/services/greasyfork/greasyfork-downloads.tester.js +++ b/services/greasyfork/greasyfork-downloads.tester.js @@ -17,3 +17,7 @@ t.create('Total Installs') t.create('Total Installs (not found)') .get('/dt/000000.json') .expectBadge({ label: 'installs', message: 'not found' }) + +t.create('Total Installs (sleazyfork)') + .get('/dt/374903.json') + .expectBadge({ label: 'installs', message: isMetric })