From 88c8b0ee3e2fd16db810f96bc9f2bc2f007ee94c Mon Sep 17 00:00:00 2001 From: Paul Melnikow Date: Tue, 11 Dec 2018 16:31:01 -0500 Subject: [PATCH] More example urls and static examples [apm waffle] (#2478) --- services/apm/apm.service.js | 48 +++++------ services/bower/bower-license.service.js | 4 +- .../cocoapods/cocoapods-license.service.js | 4 +- .../cocoapods/cocoapods-platform.service.js | 8 +- services/cpan/cpan-license.service.js | 4 +- services/cran/cran.service.js | 8 +- services/dub/dub-license-version.service.js | 10 ++- .../github/github-commit-activity.service.js | 8 +- .../github/github-commit-status.service.js | 14 +++- .../github/github-commits-since.service.js | 29 ++++++- .../github/github-contributors.service.js | 11 ++- services/github/github-downloads.service.js | 79 ++++++++++++++++--- services/github/github-followers.service.js | 10 +++ services/github/github-license.service.js | 8 +- services/jira/jira-issue.service.js | 12 ++- services/jira/jira-sprint.service.js | 12 ++- services/npm/npm-license.service.js | 12 +-- services/npm/npm-type-definitions.service.js | 6 +- .../packagist/packagist-license.service.js | 8 +- services/php-eye/php-eye-hhvm.service.js | 24 +++++- services/pypi/pypi-djversions.service.js | 4 +- services/pypi/pypi-implementation.service.js | 4 +- services/pypi/pypi-license.service.js | 4 +- services/pypi/pypi-pyversions.service.js | 4 +- services/pypi/pypi-wheel.service.js | 4 +- services/waffle/waffle.service.js | 14 +++- services/waffle/waffle.tester.js | 18 ++--- 27 files changed, 289 insertions(+), 82 deletions(-) diff --git a/services/apm/apm.service.js b/services/apm/apm.service.js index 19d24ab0ee..fb2d5d3f85 100644 --- a/services/apm/apm.service.js +++ b/services/apm/apm.service.js @@ -8,7 +8,9 @@ const BaseJsonService = require('../base-json') const { InvalidResponse } = require('../errors') const { nonNegativeInteger } = require('../validators') -const apmSchema = Joi.object({ +const keywords = ['atom'] + +const schema = Joi.object({ downloads: nonNegativeInteger, releases: Joi.object({ latest: Joi.string().required(), @@ -19,10 +21,10 @@ const apmSchema = Joi.object({ }) class BaseAPMService extends BaseJsonService { - async fetch({ repo }) { + async fetch({ packageName }) { return this._requestJson({ - schema: apmSchema, - url: `https://atom.io/api/packages/${repo}`, + schema, + url: `https://atom.io/api/packages/${packageName}`, errorMessages: { 404: 'package not found' }, }) } @@ -37,8 +39,8 @@ class APMDownloads extends BaseAPMService { return { message: metric(downloads), color: 'green' } } - async handle({ repo }) { - const json = await this.fetch({ repo }) + async handle({ packageName }) { + const json = await this.fetch({ packageName }) return this.constructor.render({ downloads: json.downloads }) } @@ -53,17 +55,17 @@ class APMDownloads extends BaseAPMService { static get route() { return { base: 'apm/dm', - pattern: ':repo', + pattern: ':packageName', } } static get examples() { return [ { - exampleUrl: 'vim-mode', - pattern: ':package', + title: 'APM', + namedParams: { packageName: 'vim-mode' }, staticExample: this.render({ downloads: '60043' }), - keywords: ['atom'], + keywords, }, ] } @@ -74,8 +76,8 @@ class APMVersion extends BaseAPMService { return renderVersionBadge({ version }) } - async handle({ repo }) { - const json = await this.fetch({ repo }) + async handle({ packageName }) { + const json = await this.fetch({ packageName }) const version = json.releases.latest if (!version) @@ -92,18 +94,17 @@ class APMVersion extends BaseAPMService { static get route() { return { base: 'apm/v', - format: '(.+)', - capture: ['repo'], + pattern: ':packageName', } } static get examples() { return [ { - exampleUrl: 'vim-mode', - pattern: ':package', + title: 'APM', + namedParams: { packageName: 'vim-mode' }, staticExample: this.render({ version: '0.6.0' }), - keywords: ['atom'], + keywords, }, ] } @@ -114,8 +115,8 @@ class APMLicense extends BaseAPMService { return renderLicenseBadge({ license }) } - async handle({ repo }) { - const json = await this.fetch({ repo }) + async handle({ packageName }) { + const json = await this.fetch({ packageName }) const license = json.metadata.license if (!license) @@ -136,18 +137,17 @@ class APMLicense extends BaseAPMService { static get route() { return { base: 'apm/l', - format: '(.+)', - capture: ['repo'], + pattern: ':packageName', } } static get examples() { return [ { - exampleUrl: 'vim-mode', - pattern: ':package', + title: 'APM', + namedParams: { packageName: 'vim-mode' }, staticExample: this.render({ license: 'MIT' }), - keywords: ['atom'], + keywords, }, ] } diff --git a/services/bower/bower-license.service.js b/services/bower/bower-license.service.js index fc17c7c4ac..4d88b7ffe9 100644 --- a/services/bower/bower-license.service.js +++ b/services/bower/bower-license.service.js @@ -12,6 +12,7 @@ module.exports = class BowerLicense extends LegacyService { static get route() { return { base: 'bower/l', + pattern: ':packageName', } } @@ -19,7 +20,8 @@ module.exports = class BowerLicense extends LegacyService { return [ { title: 'Bower', - previewUrl: 'bootstrap', + namedParams: { packageName: 'bootstrap' }, + staticPreview: { label: 'license', message: 'MIT', color: 'blue' }, }, ] } diff --git a/services/cocoapods/cocoapods-license.service.js b/services/cocoapods/cocoapods-license.service.js index 7908a92190..30bd9df7d5 100644 --- a/services/cocoapods/cocoapods-license.service.js +++ b/services/cocoapods/cocoapods-license.service.js @@ -10,6 +10,7 @@ module.exports = class CocoapodsLicense extends LegacyService { static get route() { return { base: 'cocoapods/l', + pattern: ':packageName', } } @@ -17,7 +18,8 @@ module.exports = class CocoapodsLicense extends LegacyService { return [ { title: 'Cocoapods', - previewUrl: 'AFNetworking', + namedParams: { packageName: 'AFNetworking' }, + staticPreview: { label: 'license', message: 'MIT', color: '000' }, }, ] } diff --git a/services/cocoapods/cocoapods-platform.service.js b/services/cocoapods/cocoapods-platform.service.js index bf0e266ddb..5066566b37 100644 --- a/services/cocoapods/cocoapods-platform.service.js +++ b/services/cocoapods/cocoapods-platform.service.js @@ -10,6 +10,7 @@ module.exports = class CocoapodsPlatform extends LegacyService { static get route() { return { base: 'cocoapods/p', + pattern: ':packageName', } } @@ -17,7 +18,12 @@ module.exports = class CocoapodsPlatform extends LegacyService { return [ { title: 'Cocoapods', - previewUrl: 'AFNetworking', + namedParams: { packageName: 'AFNetworking' }, + staticPreview: { + label: 'platform', + message: 'ios | osx | watchos | tvos', + color: 'lightgrey', + }, }, ] } diff --git a/services/cpan/cpan-license.service.js b/services/cpan/cpan-license.service.js index 29f15f7515..906718b203 100644 --- a/services/cpan/cpan-license.service.js +++ b/services/cpan/cpan-license.service.js @@ -10,6 +10,7 @@ module.exports = class CpanLicense extends LegacyService { static get route() { return { base: 'cpan/l', + pattern: ':packageName', } } @@ -17,7 +18,8 @@ module.exports = class CpanLicense extends LegacyService { return [ { title: 'CPAN', - previewUrl: 'Config-Augeas', + namedParams: { packageName: 'Config-Augeas' }, + staticPreview: { label: 'CPAN', message: 'lgpl_2_1', color: 'blue' }, keywords: ['perl'], }, ] diff --git a/services/cran/cran.service.js b/services/cran/cran.service.js index 7421ecb4dd..589ae4a562 100644 --- a/services/cran/cran.service.js +++ b/services/cran/cran.service.js @@ -16,6 +16,7 @@ class CranLicense extends LegacyService { static get route() { return { base: 'cran/l', + pattern: ':packageName', } } @@ -23,7 +24,12 @@ class CranLicense extends LegacyService { return [ { title: 'CRAN/METACRAN', - previewUrl: 'devtools', + namedParams: { packageName: 'devtools' }, + staticPreview: { + label: 'license', + message: 'GPL (>= 2)', + color: 'blue', + }, keywords: ['R'], }, ] diff --git a/services/dub/dub-license-version.service.js b/services/dub/dub-license-version.service.js index 3ea22d7e9c..5c0c8967f1 100644 --- a/services/dub/dub-license-version.service.js +++ b/services/dub/dub-license-version.service.js @@ -17,6 +17,7 @@ class DubVersion extends LegacyService { static get route() { return { base: 'dub/v', + pattern: ':packageName', } } @@ -24,8 +25,8 @@ class DubVersion extends LegacyService { return [ { title: 'DUB', - previewUrl: 'vibe-d', - keywords: ['dub'], + namedParams: { packageName: 'vibe-d' }, + staticPreview: { label: 'version', message: 'v0.8.4', color: 'orange' }, }, ] } @@ -41,6 +42,7 @@ class DubLicense extends LegacyService { static get route() { return { base: 'dub/l', + pattern: ':packageName', } } @@ -48,8 +50,8 @@ class DubLicense extends LegacyService { return [ { title: 'DUB', - previewUrl: 'vibe-d', - keywords: ['dub'], + namedParams: { packageName: 'vibe-d' }, + staticPreview: { label: 'license', message: 'MIT', color: 'blue' }, }, ] } diff --git a/services/github/github-commit-activity.service.js b/services/github/github-commit-activity.service.js index 40f0dcb2df..11dd3e2742 100644 --- a/services/github/github-commit-activity.service.js +++ b/services/github/github-commit-activity.service.js @@ -26,7 +26,13 @@ module.exports = class GithubCommitActivity extends LegacyService { return [ { title: 'GitHub commit activity the past week, 4 weeks, year', - previewUrl: 'y/eslint/eslint', + pattern: 'y/:user/:repo', + namedParams: { user: 'eslint', repo: 'eslint' }, + staticPreview: { + label: 'commit activity', + message: '457/year', + color: 'blue', + }, keywords: ['GitHub', 'commit', 'commits', 'activity'], documentation, }, diff --git a/services/github/github-commit-status.service.js b/services/github/github-commit-status.service.js index 8f55840cb4..0838f2962d 100644 --- a/services/github/github-commit-status.service.js +++ b/services/github/github-commit-status.service.js @@ -22,8 +22,18 @@ module.exports = class GithubCommitStatus extends LegacyService { return [ { title: 'GitHub commit merge status', - previewUrl: - 'badges/shields/master/5d4ab86b1b5ddfb3c4a70a70bd19932c52603b8c', + pattern: ':user/:repo/:branch/:commit', + namedParams: { + user: 'badges', + repo: 'shields', + branch: 'master', + commit: '5d4ab86b1b5ddfb3c4a70a70bd19932c52603b8c', + }, + staticPreview: { + label: 'commits since 3.4.7', + message: '4225', + color: 'blue', + }, keywords: ['GitHub', 'commit', 'branch', 'merge'], documentation, }, diff --git a/services/github/github-commits-since.service.js b/services/github/github-commits-since.service.js index d6e782c4de..b2ef6f069d 100644 --- a/services/github/github-commits-since.service.js +++ b/services/github/github-commits-since.service.js @@ -8,6 +8,8 @@ const { } = require('../../lib/badge-data') const { documentation } = require('./github-helpers') +const keywords = ['GitHub', 'commit'] + module.exports = class GithubCommitsSince extends LegacyService { static get category() { return 'activity' @@ -16,6 +18,7 @@ module.exports = class GithubCommitsSince extends LegacyService { static get route() { return { base: 'github/commits-since', + pattern: ':user/:repo/:version', } } @@ -23,14 +26,32 @@ module.exports = class GithubCommitsSince extends LegacyService { return [ { title: 'GitHub commits', - previewUrl: 'SubtitleEdit/subtitleedit/3.4.7', - keywords: ['GitHub', 'commit'], + namedParams: { + user: 'SubtitleEdit', + repo: 'subtitleedit', + version: '3.4.7', + }, + staticPreview: { + label: 'commits since 3.4.7', + message: '4225', + color: 'blue', + }, + keywords, documentation, }, { title: 'GitHub commits (since latest release)', - previewUrl: 'SubtitleEdit/subtitleedit/latest', - keywords: ['GitHub', 'commit'], + namedParams: { + user: 'SubtitleEdit', + repo: 'subtitleedit', + version: 'latest', + }, + staticPreview: { + label: 'commits since 3.5.7', + message: '157', + color: 'blue', + }, + keywords, documentation, }, ] diff --git a/services/github/github-contributors.service.js b/services/github/github-contributors.service.js index 20b5d5755d..aa184a7dc7 100644 --- a/services/github/github-contributors.service.js +++ b/services/github/github-contributors.service.js @@ -26,7 +26,16 @@ module.exports = class GithubContributors extends LegacyService { return [ { title: 'GitHub contributors', - previewUrl: 'contributors/cdnjs/cdnjs', + pattern: 'contributors/:user/:repo', + namedParams: { + user: 'cdnjs', + repo: 'cdnjs', + }, + staticPreview: { + label: 'contributors', + message: '397', + color: 'blue', + }, keywords: ['GitHub', 'contributor'], documentation, }, diff --git a/services/github/github-downloads.service.js b/services/github/github-downloads.service.js index f4cc345ed1..3b7bbbacaa 100644 --- a/services/github/github-downloads.service.js +++ b/services/github/github-downloads.service.js @@ -26,38 +26,93 @@ module.exports = class GithubDownloads extends LegacyService { return [ { title: 'GitHub All Releases', - previewUrl: 'downloads/atom/atom/total', - keywords: ['github'], + pattern: 'downloads/:user/:repo/total', + namedParams: { + user: 'atom', + repo: 'atom', + }, + staticPreview: { + label: 'downloads', + message: '857k total', + color: 'brightgreen', + }, documentation, }, { title: 'GitHub Releases', - previewUrl: 'downloads/atom/atom/latest/total', - keywords: ['github'], + pattern: 'downloads/:user/:repo/:tag/total', + namedParams: { + user: 'atom', + repo: 'atom', + tag: 'latest', + }, + staticPreview: { + label: 'downloads', + message: '27k', + color: 'brightgreen', + }, documentation, }, { title: 'GitHub Pre-Releases', - previewUrl: 'downloads-pre/atom/atom/latest/total', - keywords: ['github'], + pattern: 'downloads-pre/:user/:repo/:tag/total', + namedParams: { + user: 'atom', + repo: 'atom', + tag: 'latest', + }, + staticPreview: { + label: 'downloads', + message: '2k', + color: 'brightgreen', + }, documentation, }, { title: 'GitHub Releases (by Release)', - previewUrl: 'downloads/atom/atom/v0.190.0/total', - keywords: ['github'], + pattern: 'downloads/:user/:repo/:tag/total', + namedParams: { + user: 'atom', + repo: 'atom', + tag: 'v0.190.0', + }, + staticPreview: { + label: 'downloads', + message: '490k v0.190.0', + color: 'brightgreen', + }, documentation, }, { title: 'GitHub Releases (by Asset)', - previewUrl: 'downloads/atom/atom/latest/atom-amd64.deb', - keywords: ['github'], + pattern: 'downloads/:user/:repo/:tag/:path*', + namedParams: { + user: 'atom', + repo: 'atom', + tag: 'latest', + path: 'atom-amd64.deb', + }, + staticPreview: { + label: 'downloads', + message: '3k [atom-amd64.deb]', + color: 'brightgreen', + }, documentation, }, { title: 'GitHub Pre-Releases (by Asset)', - previewUrl: 'downloads-pre/atom/atom/latest/atom-amd64.deb', - keywords: ['github'], + pattern: 'downloads-pre/:user/:repo/:tag/:path*', + namedParams: { + user: 'atom', + repo: 'atom', + tag: 'latest', + path: 'atom-amd64.deb', + }, + staticPreview: { + label: 'downloads', + message: '237 [atom-amd64.deb]', + color: 'brightgreen', + }, documentation, }, ] diff --git a/services/github/github-followers.service.js b/services/github/github-followers.service.js index 45098fa3e3..a813d8e9e1 100644 --- a/services/github/github-followers.service.js +++ b/services/github/github-followers.service.js @@ -25,7 +25,17 @@ module.exports = class GithubFollowers extends LegacyService { return [ { title: 'GitHub followers', + pattern: ':user', previewUrl: 'espadrine', + // https://github.com/badges/shields/issues/2479 + // namedParams: { + // user: 'espadrine', + // }, + // staticPreview: { + // label: 'Follow', + // message: '150', + // style: 'social', + // }, queryParams: { style: 'social', label: 'Follow' }, documentation, }, diff --git a/services/github/github-license.service.js b/services/github/github-license.service.js index 8a823126b4..ce8103ec2d 100644 --- a/services/github/github-license.service.js +++ b/services/github/github-license.service.js @@ -20,6 +20,7 @@ module.exports = class GithubLicense extends LegacyService { static get route() { return { base: 'github/license', + pattern: ':user/:repo', } } @@ -27,7 +28,12 @@ module.exports = class GithubLicense extends LegacyService { return [ { title: 'GitHub', - previewUrl: 'mashape/apistatus', + namedParams: { user: 'mashape', repo: 'apistatus' }, + staticExample: { + label: 'license', + message: 'MIT', + color: 'green', + }, keywords: ['GitHub', 'license'], documentation, }, diff --git a/services/jira/jira-issue.service.js b/services/jira/jira-issue.service.js index 75d66e15a2..b1a26924c6 100644 --- a/services/jira/jira-issue.service.js +++ b/services/jira/jira-issue.service.js @@ -19,7 +19,17 @@ module.exports = class JiraIssue extends LegacyService { return [ { title: 'JIRA issue', - previewUrl: 'https/issues.apache.org/jira/KAFKA-2896', + pattern: ':protocol/:hostAndPath+/:issueKey', + namedParams: { + protocol: 'https', + hostAndPath: 'issues.apache.org/jira', + issueKey: 'KAFKA-2896', + }, + staticPreview: { + label: 'kafka-2896', + message: 'Resolved', + color: 'green', + }, }, ] } diff --git a/services/jira/jira-sprint.service.js b/services/jira/jira-sprint.service.js index 044da782a8..1f21353231 100644 --- a/services/jira/jira-sprint.service.js +++ b/services/jira/jira-sprint.service.js @@ -27,7 +27,17 @@ module.exports = class JiraSprint extends LegacyService { return [ { title: 'JIRA sprint completion', - previewUrl: 'https/jira.spring.io/94', + pattern: ':protocol/:host/:sprintId', + namedParams: { + protocol: 'https', + host: 'jira.spring.io', + sprintId: '94', + }, + staticPreview: { + label: 'completion', + message: '96%', + color: 'orange', + }, documentation, }, ] diff --git a/services/npm/npm-license.service.js b/services/npm/npm-license.service.js index b57dc48d65..0517975f90 100644 --- a/services/npm/npm-license.service.js +++ b/services/npm/npm-license.service.js @@ -16,16 +16,18 @@ module.exports = class NpmLicense extends NpmBase { static get examples() { return [ { - exampleUrl: 'express', - pattern: ':package', + title: 'NPM', + pattern: ':packageName', + namedParams: { packageName: 'express' }, staticExample: this.render({ licenses: ['MIT'] }), keywords: ['node'], }, { - exampleUrl: 'express', - pattern: ':package', - staticExample: this.render({ licenses: ['MIT'] }), + title: 'NPM', + pattern: ':packageName', + namedParams: { packageName: 'express' }, queryParams: { registry_uri: 'https://registry.npmjs.com' }, + staticExample: this.render({ licenses: ['MIT'] }), keywords: ['node'], }, ] diff --git a/services/npm/npm-type-definitions.service.js b/services/npm/npm-type-definitions.service.js index 353dc67e72..1e36ab08a9 100644 --- a/services/npm/npm-type-definitions.service.js +++ b/services/npm/npm-type-definitions.service.js @@ -22,7 +22,11 @@ module.exports = class NpmTypeDefinitions extends NpmBase { return [ { title: 'npm type definitions', - previewUrl: 'chalk', + pattern: ':packageName', + namedParams: { packageName: 'chalk' }, + staticPreview: this.render({ + supportedLanguages: ['TypeScript', 'Flow'], + }), keywords: ['node', 'typescript', 'flow'], }, ] diff --git a/services/packagist/packagist-license.service.js b/services/packagist/packagist-license.service.js index 379ddc0ce4..1ef12fa9dd 100644 --- a/services/packagist/packagist-license.service.js +++ b/services/packagist/packagist-license.service.js @@ -11,6 +11,7 @@ module.exports = class PackagistLicense extends LegacyService { static get route() { return { base: 'packagist/l', + pattern: ':user/:repo', } } @@ -18,7 +19,12 @@ module.exports = class PackagistLicense extends LegacyService { return [ { title: 'Packagist', - previewUrl: 'doctrine/orm', + namedParams: { user: 'doctrine', repo: 'orm' }, + staticPreview: { + label: 'license', + message: 'MIT', + color: 'blue', + }, keywords: ['PHP'], }, ] diff --git a/services/php-eye/php-eye-hhvm.service.js b/services/php-eye/php-eye-hhvm.service.js index b15f00eacb..0baa791d60 100644 --- a/services/php-eye/php-eye-hhvm.service.js +++ b/services/php-eye/php-eye-hhvm.service.js @@ -5,6 +5,8 @@ const { makeBadgeData: getBadgeData } = require('../../lib/badge-data') const { checkErrorResponse } = require('../../lib/error-helper') const { omitv } = require('../../lib/text-formatters') +const keywords = ['php', 'runtime'] + module.exports = class PhpeyeHhvm extends LegacyService { static get category() { return 'platform-support' @@ -20,11 +22,29 @@ module.exports = class PhpeyeHhvm extends LegacyService { return [ { title: 'HHVM', - previewUrl: 'symfony/symfony', + pattern: ':user/:packageName', + namedParams: { user: 'symfony', packageName: 'symfony' }, + staticPreview: { + label: 'hhvm', + message: 'not tested', + color: 'red', + }, + keywords, }, { title: 'HHVM (branch)', - previewUrl: 'symfony/symfony/master', + pattern: ':user/:packageName/:branch', + namedParams: { + user: 'symfony', + packageName: 'symfony', + branch: 'master', + }, + staticPreview: { + label: 'hhvm', + message: 'not tested', + color: 'red', + }, + keywords, }, ] } diff --git a/services/pypi/pypi-djversions.service.js b/services/pypi/pypi-djversions.service.js index 898df3e6cd..e1c12085a7 100644 --- a/services/pypi/pypi-djversions.service.js +++ b/services/pypi/pypi-djversions.service.js @@ -20,7 +20,9 @@ module.exports = class PypiDjangoVersions extends PypiBase { return [ { title: 'PyPI - Django Version', - previewUrl: 'djangorestframework', + pattern: ':packageName', + namedParams: { packageName: 'djangorestframework' }, + staticPreview: this.render({ versions: ['1.11', '2.0', '2.1'] }), keywords: ['python', 'django'], }, ] diff --git a/services/pypi/pypi-implementation.service.js b/services/pypi/pypi-implementation.service.js index 96adfa2eb8..659a581b02 100644 --- a/services/pypi/pypi-implementation.service.js +++ b/services/pypi/pypi-implementation.service.js @@ -20,7 +20,9 @@ module.exports = class PypiImplementation extends PypiBase { return [ { title: 'PyPI - Implementation', - previewUrl: 'Django', + pattern: ':packageName', + namedParams: { packageName: 'Django' }, + staticPreview: this.render({ implementations: ['cpython'] }), keywords: ['python'], }, ] diff --git a/services/pypi/pypi-license.service.js b/services/pypi/pypi-license.service.js index 9282fa2d65..7763c512c5 100644 --- a/services/pypi/pypi-license.service.js +++ b/services/pypi/pypi-license.service.js @@ -17,7 +17,9 @@ module.exports = class PypiLicense extends PypiBase { return [ { title: 'PyPI - License', - previewUrl: 'Django', + pattern: ':packageName', + namedParams: { packageName: 'Django' }, + staticPreview: { label: 'license', message: 'BSD', color: 'lightgrey' }, keywords: ['python'], }, ] diff --git a/services/pypi/pypi-pyversions.service.js b/services/pypi/pypi-pyversions.service.js index 6fe99a9d7f..dbd784f666 100644 --- a/services/pypi/pypi-pyversions.service.js +++ b/services/pypi/pypi-pyversions.service.js @@ -20,7 +20,9 @@ module.exports = class PypiPythonVersions extends PypiBase { return [ { title: 'PyPI - Python Version', - previewUrl: 'Django', + pattern: ':packageName', + namedParams: { packageName: 'Django' }, + staticPreview: this.render({ versions: ['3.5', '3.6', '3.7'] }), keywords: ['python'], }, ] diff --git a/services/pypi/pypi-wheel.service.js b/services/pypi/pypi-wheel.service.js index bdbbd97885..3c0367cac2 100644 --- a/services/pypi/pypi-wheel.service.js +++ b/services/pypi/pypi-wheel.service.js @@ -20,7 +20,9 @@ module.exports = class PypiWheel extends PypiBase { return [ { title: 'PyPI - Wheel', - previewUrl: 'Django', + pattern: ':packageName', + namedParams: { packageName: 'Django' }, + staticPreview: this.render({ hasWheel: true }), keywords: ['python'], }, ] diff --git a/services/waffle/waffle.service.js b/services/waffle/waffle.service.js index 33df240e1f..2cfec099af 100644 --- a/services/waffle/waffle.service.js +++ b/services/waffle/waffle.service.js @@ -15,7 +15,7 @@ module.exports = class Waffle extends LegacyService { static get route() { return { - base: 'waffle', + base: 'waffle/label', } } @@ -23,7 +23,17 @@ module.exports = class Waffle extends LegacyService { return [ { title: 'Waffle.io', - previewUrl: 'label/evancohen/smart-mirror/status%3A%20in%20progress', + pattern: ':user/:repo/:query', + namedParams: { + user: 'evancohen', + repo: 'smart-mirror', + query: 'status: in progress', + }, + staticPreview: { + label: 'status: in progress', + message: '2', + color: '000', + }, }, ] } diff --git a/services/waffle/waffle.tester.js b/services/waffle/waffle.tester.js index f1431f0a89..567a1224dd 100644 --- a/services/waffle/waffle.tester.js +++ b/services/waffle/waffle.tester.js @@ -1,11 +1,9 @@ 'use strict' const Joi = require('joi') -const ServiceTester = require('../service-tester') const { invalidJSON } = require('../response-fixtures') -const t = new ServiceTester({ id: 'waffle', title: 'Waffle.io' }) -module.exports = t +const t = (module.exports = require('../create-service-tester')()) const fakeData = [ { @@ -34,7 +32,7 @@ const fakeData = [ t.create( 'label should be `bug` & value should be exactly 5 as supplied in `fakeData`. e.g: bug|5' ) - .get('/label/userName/repoName/bug.json?style=_shields_test') + .get('/userName/repoName/bug.json?style=_shields_test') .intercept(nock => nock('https://api.waffle.io/') .get('/userName/repoName/columns?with=count') @@ -47,7 +45,7 @@ t.create( }) t.create('label should be `Mybug` & value should be formated. e.g: Mybug|25') - .get('/label/ritwickdey/vscode-live-server/bug.json?label=Mybug') + .get('/ritwickdey/vscode-live-server/bug.json?label=Mybug') .expectJSONTypes( Joi.object().keys({ name: 'Mybug', @@ -58,7 +56,7 @@ t.create('label should be `Mybug` & value should be formated. e.g: Mybug|25') ) t.create('label (repo not found)') - .get('/label/not-a-user/not-a-repo/bug.json') + .get('/not-a-user/not-a-repo/bug.json') .expectJSON({ name: 'waffle', value: 'not found', @@ -66,7 +64,7 @@ t.create('label (repo not found)') t.create('label (label not found)') .get( - '/label/ritwickdey/vscode-live-server/not-a-real-label.json?style=_shields_test' + '/ritwickdey/vscode-live-server/not-a-real-label.json?style=_shields_test' ) .expectJSON({ name: 'not-a-real-label', @@ -75,7 +73,7 @@ t.create('label (label not found)') }) t.create('label (empty response)') - .get('/label/userName/repoName/bug.json') + .get('/userName/repoName/bug.json') .intercept(nock => nock('https://api.waffle.io/') .get('/userName/repoName/columns?with=count') @@ -87,12 +85,12 @@ t.create('label (empty response)') }) t.create('label (connection error)') - .get('/label/ritwickdey/vscode-live-server/bug.json') + .get('/ritwickdey/vscode-live-server/bug.json') .networkOff() .expectJSON({ name: 'waffle', value: 'inaccessible' }) t.create('label (unexpected response)') - .get('/label/userName/repoName/bug.json') + .get('/userName/repoName/bug.json') .intercept(nock => nock('https://api.waffle.io/') .get('/userName/repoName/columns?with=count')