diff --git a/services/greasyfork/greasyfork-base.js b/services/greasyfork/greasyfork-base.js index a9c474647c4a274c6f07e07541aba88e0bb28453..ff1ae773948361fc669a86b5b51a5f9a19c51fa9 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 dc69e7c1cbaf38629a800b2efed51f53d97d38ae..ad8102e844415f4d702c23ac477e788e057e575c 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 })