From e2c930c7d198fd340adfdde99fa3d129c4f21426 Mon Sep 17 00:00:00 2001 From: chris48s Date: Sun, 12 Aug 2018 20:20:39 +0100 Subject: [PATCH 01/25] allow service classes to define a staticExample --- services/base.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/services/base.js b/services/base.js index ce011f4f6f6b6..3660172ad5159 100644 --- a/services/base.js +++ b/services/base.js @@ -94,6 +94,12 @@ class BaseService { return '/' + [this.url.base, partialUrl].filter(Boolean).join('/') } + static _makeStaticUrl(serviceData) { + const badgeData = this._makeBadgeData({}, serviceData) + const color = badgeData.colorscheme || badgeData.colorB + return `/badge/${badgeData.text[0]}-${badgeData.text[1]}-${color}` + } + /** * Return an array of examples. Each example is prepared according to the * schema in `lib/all-badge-examples.js`. Four keys are supported: @@ -104,9 +110,20 @@ class BaseService { */ static prepareExamples() { return this.examples.map( - ({ title, previewUrl, query, exampleUrl, documentation }) => { - if (!previewUrl) { - throw Error(`Example for ${this.name} is missing required previewUrl`) + ({ + title, + staticExample, + previewUrl, + query, + exampleUrl, + documentation, + }) => { + if (!previewUrl && !staticExample) { + throw Error( + `Example for ${ + this.name + } is missing required previewUrl or staticExample` + ) } const stringified = queryString.stringify(query) @@ -114,7 +131,9 @@ class BaseService { return { title: title ? `${title}` : this.name, - previewUri: `${this._makeFullUrl(previewUrl, query)}.svg${suffix}`, + previewUri: staticExample + ? `${this._makeStaticUrl(staticExample)}.svg` + : `${this._makeFullUrl(previewUrl, query)}.svg${suffix}`, exampleUri: exampleUrl ? `${this._makeFullUrl(exampleUrl, query)}.svg${suffix}` : undefined, From ca4c1a0b618437ef452d99399265eeff3e82bfc7 Mon Sep 17 00:00:00 2001 From: chris48s Date: Sun, 12 Aug 2018 20:21:00 +0100 Subject: [PATCH 02/25] define static example for cdnjs --- services/cdnjs/cdnjs.service.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/cdnjs/cdnjs.service.js b/services/cdnjs/cdnjs.service.js index b6db1f9ec267a..15fab39eb3dce 100644 --- a/services/cdnjs/cdnjs.service.js +++ b/services/cdnjs/cdnjs.service.js @@ -59,7 +59,8 @@ module.exports = class Cdnjs extends BaseJsonService { static get examples() { return [ { - previewUrl: 'jquery', + exampleUrl: 'jquery', + staticExample: this.render({ version: '1.5.2' }), keywords: ['cdn', 'cdnjs'], }, ] From 1c9305fbac3c3c74aad1698ff4579273e7455add Mon Sep 17 00:00:00 2001 From: chris48s Date: Mon, 13 Aug 2018 20:12:20 +0100 Subject: [PATCH 03/25] rename method --- services/base.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/base.js b/services/base.js index 3660172ad5159..e7a62a5eab05f 100644 --- a/services/base.js +++ b/services/base.js @@ -94,7 +94,7 @@ class BaseService { return '/' + [this.url.base, partialUrl].filter(Boolean).join('/') } - static _makeStaticUrl(serviceData) { + static _makeStaticExampleUrl(serviceData) { const badgeData = this._makeBadgeData({}, serviceData) const color = badgeData.colorscheme || badgeData.colorB return `/badge/${badgeData.text[0]}-${badgeData.text[1]}-${color}` @@ -132,7 +132,7 @@ class BaseService { return { title: title ? `${title}` : this.name, previewUri: staticExample - ? `${this._makeStaticUrl(staticExample)}.svg` + ? `${this._makeStaticExampleUrl(staticExample)}.svg` : `${this._makeFullUrl(previewUrl, query)}.svg${suffix}`, exampleUri: exampleUrl ? `${this._makeFullUrl(exampleUrl, query)}.svg${suffix}` From af19ff03557bd9557c41743277e4a30bde9a3290 Mon Sep 17 00:00:00 2001 From: chris48s Date: Mon, 13 Aug 2018 21:21:10 +0100 Subject: [PATCH 04/25] encode special chars in URL --- services/base.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/base.js b/services/base.js index e7a62a5eab05f..2cc2236146a17 100644 --- a/services/base.js +++ b/services/base.js @@ -97,7 +97,9 @@ class BaseService { static _makeStaticExampleUrl(serviceData) { const badgeData = this._makeBadgeData({}, serviceData) const color = badgeData.colorscheme || badgeData.colorB - return `/badge/${badgeData.text[0]}-${badgeData.text[1]}-${color}` + return `/badge/${encodeURIComponent( + badgeData.text[0] + )}-${encodeURIComponent(badgeData.text[1])}-${color}` } /** From 35b6999b69ae57b9e6bff96ad11acd0be67c0853 Mon Sep 17 00:00:00 2001 From: chris48s Date: Mon, 13 Aug 2018 21:21:58 +0100 Subject: [PATCH 05/25] add tests --- services/base.spec.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/services/base.spec.js b/services/base.spec.js index cdf75850ee80e..7a08b87273cd2 100644 --- a/services/base.spec.js +++ b/services/base.spec.js @@ -15,17 +15,26 @@ const BaseService = require('./base') require('../lib/register-chai-plugins.spec') class DummyService extends BaseService { - async handle({ namedParamA }, { queryParamA }) { + static render({ namedParamA, queryParamA }) { return { message: `Hello ${namedParamA}${queryParamA}` } } + async handle({ namedParamA }, { queryParamA }) { + return this.constructor.render({ namedParamA, queryParamA }) + } + static get category() { return 'cat' } + static get examples() { return [ { previewUrl: 'World' }, { previewUrl: 'World', query: { queryParamA: '!!!' } }, + { + exampleUrl: 'World', + staticExample: this.render({ namedParamA: 'foo', queryParamA: 'bar' }), + }, ] } static get url() { @@ -306,7 +315,7 @@ describe('BaseService', function() { describe('prepareExamples', function() { it('returns the expected result', function() { - const [first, second] = DummyService.prepareExamples() + const [first, second, third] = DummyService.prepareExamples() expect(first).to.deep.equal({ title: 'DummyService', previewUri: '/foo/World.svg', @@ -319,6 +328,12 @@ describe('BaseService', function() { exampleUri: undefined, documentation: undefined, }) + expect(third).to.deep.equal({ + title: 'DummyService', + previewUri: '/badge/cat-Hello%20foobar-lightgrey.svg', + exampleUri: '/foo/World.svg', + documentation: undefined, + }) }) }) }) From 687dda5ba36c172233e59be60d84f83c672384c3 Mon Sep 17 00:00:00 2001 From: chris48s Date: Tue, 14 Aug 2018 19:55:04 +0100 Subject: [PATCH 06/25] use a placeholder instead of a real name this makes the example less confusing and brings the style into line with others that define an exampleUri e.g: Travis, CircleCI, iTunes, etc --- services/cdnjs/cdnjs.service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/cdnjs/cdnjs.service.js b/services/cdnjs/cdnjs.service.js index 15fab39eb3dce..34594c3545f3a 100644 --- a/services/cdnjs/cdnjs.service.js +++ b/services/cdnjs/cdnjs.service.js @@ -59,7 +59,7 @@ module.exports = class Cdnjs extends BaseJsonService { static get examples() { return [ { - exampleUrl: 'jquery', + exampleUrl: 'LIBRARY', staticExample: this.render({ version: '1.5.2' }), keywords: ['cdn', 'cdnjs'], }, From 0e59399c11e341380f5ad3e2315d101d66095d23 Mon Sep 17 00:00:00 2001 From: chris48s Date: Wed, 15 Aug 2018 18:32:27 +0100 Subject: [PATCH 07/25] update other new-style services to use static examples --- services/apm/apm.service.js | 39 ++++++++++++++----- services/appveyor/appveyor.service.js | 6 ++- services/clojars/clojars.service.js | 7 +++- services/gem/gem-downloads.service.js | 21 ++++++++-- services/gem/gem-owner.service.js | 3 +- services/gem/gem-rank.service.js | 12 +++++- services/gem/gem-version.service.js | 3 +- .../librariesio-dependent-repos.service.js | 3 +- .../librariesio-dependents.service.js | 3 +- .../librariesio-sourcerank.service.js | 3 +- services/npm/npm-downloads.service.js | 3 +- services/npm/npm-license.service.js | 6 ++- services/npm/npm-version.service.js | 15 ++++--- .../uptimerobot/uptimerobot-ratio.service.js | 8 ++-- .../uptimerobot/uptimerobot-status.service.js | 5 ++- 15 files changed, 101 insertions(+), 36 deletions(-) diff --git a/services/apm/apm.service.js b/services/apm/apm.service.js index 277478ac5a448..c0630097e3f8e 100644 --- a/services/apm/apm.service.js +++ b/services/apm/apm.service.js @@ -29,15 +29,6 @@ class BaseAPMService extends BaseJsonService { static get defaultBadgeData() { return { label: 'apm' } } - - static get examples() { - return [ - { - previewUrl: 'vim-mode', - keywords: ['atom'], - }, - ] - } } class APMDownloads extends BaseAPMService { @@ -65,6 +56,16 @@ class APMDownloads extends BaseAPMService { capture: ['repo'], } } + + static get examples() { + return [ + { + exampleUrl: 'PACKAGE', + staticExample: this.render({ downloads: '60043' }), + keywords: ['atom'], + }, + ] + } } class APMVersion extends BaseAPMService { @@ -94,6 +95,16 @@ class APMVersion extends BaseAPMService { capture: ['repo'], } } + + static get examples() { + return [ + { + exampleUrl: 'PACKAGE', + staticExample: this.render({ version: '0.6.0' }), + keywords: ['atom'], + }, + ] + } } class APMLicense extends BaseAPMService { @@ -127,6 +138,16 @@ class APMLicense extends BaseAPMService { capture: ['repo'], } } + + static get examples() { + return [ + { + exampleUrl: 'PACKAGE', + staticExample: this.render({ license: 'MIT' }), + keywords: ['atom'], + }, + ] + } } module.exports = { diff --git a/services/appveyor/appveyor.service.js b/services/appveyor/appveyor.service.js index 26d029ce23994..8c2a39e807cea 100644 --- a/services/appveyor/appveyor.service.js +++ b/services/appveyor/appveyor.service.js @@ -55,11 +55,13 @@ module.exports = class AppVeyor extends BaseJsonService { static get examples() { return [ { - previewUrl: 'gruntjs/grunt', + exampleUrl: 'USER/REPO', + staticExample: this.render({ status: 'success' }), }, { title: `${this.name} branch`, - previewUrl: 'gruntjs/grunt/master', + exampleUrl: 'USER/REPO/BRANCH', + staticExample: this.render({ status: 'success' }), }, ] } diff --git a/services/clojars/clojars.service.js b/services/clojars/clojars.service.js index 0a9cef2d9762c..2063629428f34 100644 --- a/services/clojars/clojars.service.js +++ b/services/clojars/clojars.service.js @@ -56,6 +56,11 @@ module.exports = class Clojars extends BaseJsonService { } static get examples() { - return [{ previewUrl: 'prismic' }] + return [ + { + exampleUrl: 'PACKAGE', + staticExample: this.render({ clojar: 'clojar', version: '1.2' }), + }, + ] } } diff --git a/services/gem/gem-downloads.service.js b/services/gem/gem-downloads.service.js index 2c64a15262f9e..f9992a6306c97 100644 --- a/services/gem/gem-downloads.service.js +++ b/services/gem/gem-downloads.service.js @@ -122,22 +122,35 @@ module.exports = class GemDownloads extends BaseJsonService { return [ { title: 'Gem', - previewUrl: 'dv/rails/stable', + exampleUrl: 'dv/PACKAGE/stable', + staticExample: this.render({ + label: 'downloads@stable', + downloads: 70000, + }), keywords: ['ruby'], }, { title: 'Gem', - previewUrl: 'dv/rails/4.1.0', + exampleUrl: 'dv/PACKAGE/VERSION', + staticExample: this.render({ + label: 'downloads@4.1.0', + downloads: 50000, + }), keywords: ['ruby'], }, { title: 'Gem', - previewUrl: 'dtv/rails', + exampleUrl: 'dtv/PACKAGE', + staticExample: this.render({ + label: 'downloads@latest', + downloads: 70000, + }), keywords: ['ruby'], }, { title: 'Gem', - previewUrl: 'dt/rails', + exampleUrl: 'dt/PACKAGE', + staticExample: this.render({ label: 'downloads', downloads: 900000 }), keywords: ['ruby'], }, ] diff --git a/services/gem/gem-owner.service.js b/services/gem/gem-owner.service.js index c3b485e7769a6..b4cca1699cca9 100644 --- a/services/gem/gem-owner.service.js +++ b/services/gem/gem-owner.service.js @@ -49,7 +49,8 @@ module.exports = class GemOwner extends BaseJsonService { return [ { title: 'Gems', - previewUrl: 'raphink', + exampleUrl: 'USER', + staticExample: this.render({ count: 34 }), keywords: ['ruby'], }, ] diff --git a/services/gem/gem-rank.service.js b/services/gem/gem-rank.service.js index e885c0db72bf2..5273b7433b825 100644 --- a/services/gem/gem-rank.service.js +++ b/services/gem/gem-rank.service.js @@ -76,12 +76,20 @@ module.exports = class GemRank extends BaseJsonService { return [ { title: 'Gems', - previewUrl: 'rt/puppet', + exampleUrl: 'rt/PACKAGE', + staticExample: this.render({ + message: ordinalNumber(332), + count: 332, + }), keywords: ['ruby'], }, { title: 'Gems', - previewUrl: 'rd/facter', + exampleUrl: 'rd/PACKAGE', + staticExample: this.render({ + message: ordinalNumber(656) + ' daily', + count: 656, + }), keywords: ['ruby'], }, ] diff --git a/services/gem/gem-version.service.js b/services/gem/gem-version.service.js index 33561b6bbd9a8..4c4cc46feefc2 100644 --- a/services/gem/gem-version.service.js +++ b/services/gem/gem-version.service.js @@ -55,7 +55,8 @@ module.exports = class GemVersion extends BaseJsonService { return [ { title: 'Gem', - previewUrl: 'formatador', + exampleUrl: 'PACKAGE', + staticExample: this.render({ version: '2.1.0' }), keywords: ['ruby'], }, ] diff --git a/services/librariesio/librariesio-dependent-repos.service.js b/services/librariesio/librariesio-dependent-repos.service.js index 39f531b8b8f60..fc3ebcb08fe35 100644 --- a/services/librariesio/librariesio-dependent-repos.service.js +++ b/services/librariesio/librariesio-dependent-repos.service.js @@ -23,7 +23,8 @@ class LibrariesIoDependentRepos extends LibrariesIoBase { return [ { title: 'Dependent repos (via libraries.io)', - previewUrl: 'npm/got', + exampleUrl: 'PLATFORM/LIBRARY', + staticExample: this.render({ dependentReposCount: '84000' }), }, ] } diff --git a/services/librariesio/librariesio-dependents.service.js b/services/librariesio/librariesio-dependents.service.js index 7f9e6544fb30a..33b2dc667eefc 100644 --- a/services/librariesio/librariesio-dependents.service.js +++ b/services/librariesio/librariesio-dependents.service.js @@ -23,7 +23,8 @@ class LibrariesIoDependents extends LibrariesIoBase { return [ { title: 'Dependents (via libraries.io)', - previewUrl: 'npm/got', + exampleUrl: 'PLATFORM/LIBRARY', + staticExample: this.render({ dependentCount: '2000' }), }, ] } diff --git a/services/librariesio/librariesio-sourcerank.service.js b/services/librariesio/librariesio-sourcerank.service.js index 9071149f2762f..95359d4882ea9 100644 --- a/services/librariesio/librariesio-sourcerank.service.js +++ b/services/librariesio/librariesio-sourcerank.service.js @@ -24,7 +24,8 @@ class LibrariesIoSourcerank extends LibrariesIoBase { return [ { title: 'Libraries.io SourceRank', - previewUrl: 'npm/got', + exampleUrl: 'PLATFORM/LIBRARY', + staticExample: this.render({ rank: 25 }), }, ] } diff --git a/services/npm/npm-downloads.service.js b/services/npm/npm-downloads.service.js index 401a693db5dd9..7c992a55e87b7 100644 --- a/services/npm/npm-downloads.service.js +++ b/services/npm/npm-downloads.service.js @@ -62,7 +62,8 @@ function DownloadsForInterval(interval) { return [ { title: 'npm', - previewUrl: 'localeval', + exampleUrl: 'PACKAGE', + staticExample: this.render({ downloads: 30000 }), keywords: ['node'], }, ] diff --git a/services/npm/npm-license.service.js b/services/npm/npm-license.service.js index a77bfa9db56d2..c7c8fbe1a072c 100644 --- a/services/npm/npm-license.service.js +++ b/services/npm/npm-license.service.js @@ -20,11 +20,13 @@ module.exports = class NpmLicense extends NpmBase { static get examples() { return [ { - previewUrl: 'express', + exampleUrl: 'PACKAGE', + staticExample: this.render({licenses:['MIT']}), keywords: ['node'], }, { - previewUrl: 'express', + exampleUrl: 'PACKAGE', + staticExample: this.render({licenses:['MIT']}), query: { registry_uri: 'https://registry.npmjs.com' }, keywords: ['node'], }, diff --git a/services/npm/npm-version.service.js b/services/npm/npm-version.service.js index 97634705b6e9d..cf24eedf57e3f 100644 --- a/services/npm/npm-version.service.js +++ b/services/npm/npm-version.service.js @@ -27,28 +27,33 @@ module.exports = class NpmVersion extends NpmBase { static get examples() { return [ { - previewUrl: 'npm', + exampleUrl: 'PACKAGE', + staticExample: this.render({ tag: undefined, version: '6.3.0' }), keywords: ['node'], }, { title: 'npm (scoped)', - previewUrl: '@cycle/core', + exampleUrl: '@SCOPE/PACKAGE', + staticExample: this.render({ tag: undefined, version: '7.0.0' }), keywords: ['node'], }, { title: 'npm (tag)', - previewUrl: 'npm/next', + exampleUrl: 'PACKAGE/TAG', + staticExample: this.render({ tag: 'latest', version: '6.3.0' }), keywords: ['node'], }, { title: 'npm (custom registry)', - previewUrl: 'npm/next', + exampleUrl: 'PACKAGE/TAG', + staticExample: this.render({ tag: 'latest', version: '7.0.0' }), query: { registry_uri: 'https://registry.npmjs.com' }, keywords: ['node'], }, { title: 'npm (scoped with tag)', - previewUrl: '@cycle/core/canary', + staticExample: this.render({ tag: 'latest', version: '6.3.0' }), + exampleUrl: '@SCOPE/PACKAGE/TAG', keywords: ['node'], }, ] diff --git a/services/uptimerobot/uptimerobot-ratio.service.js b/services/uptimerobot/uptimerobot-ratio.service.js index f8d7c584f42c0..45622557d2108 100644 --- a/services/uptimerobot/uptimerobot-ratio.service.js +++ b/services/uptimerobot/uptimerobot-ratio.service.js @@ -24,16 +24,18 @@ module.exports = class UptimeRobotRatio extends UptimeRobotBase { return [ { title: 'Uptime Robot ratio (30 days)', - previewUrl: 'm778918918-3e92c097147760ee39d02d36', + exampleUrl: 'MONITOR-SPECIFIC-KEY', + staticExample: this.render({ ratio: 100 }), }, { title: 'Uptime Robot ratio (7 days)', - previewUrl: '7/m778918918-3e92c097147760ee39d02d36', + exampleUrl: '7/MONITOR-SPECIFIC-KEY', + staticExample: this.render({ ratio: 100 }), }, ] } - static async render({ ratio }) { + static render({ ratio }) { return { message: `${ratio}%`, color: ratioColor(ratio), diff --git a/services/uptimerobot/uptimerobot-status.service.js b/services/uptimerobot/uptimerobot-status.service.js index 50e5106ea0317..50dfb3fe8ca73 100644 --- a/services/uptimerobot/uptimerobot-status.service.js +++ b/services/uptimerobot/uptimerobot-status.service.js @@ -21,12 +21,13 @@ module.exports = class UptimeRobotStatus extends UptimeRobotBase { return [ { title: 'Uptime Robot status', - previewUrl: 'm778918918-3e92c097147760ee39d02d36', + exampleUrl: 'MONITOR-SPECIFIC-KEY', + staticExample: this.render({ status: 2 }), }, ] } - static async render({ status }) { + static render({ status }) { switch (status) { case 0: return { message: 'paused', color: 'yellow' } From 5b26ba1d408cc63ea99e498a60f2b3bc6384e767 Mon Sep 17 00:00:00 2001 From: chris48s Date: Wed, 15 Aug 2018 19:00:11 +0100 Subject: [PATCH 08/25] update all-badge-examples test to expect static example --- lib/all-badge-examples.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/all-badge-examples.spec.js b/lib/all-badge-examples.spec.js index fd4758959fbf6..3da7baa051dd1 100644 --- a/lib/all-badge-examples.spec.js +++ b/lib/all-badge-examples.spec.js @@ -15,14 +15,14 @@ describe('The badge examples', function() { expect(appVeyorBuildExamples).to.deep.equal([ { title: 'AppVeyor', - previewUri: '/appveyor/ci/gruntjs/grunt.svg', - exampleUri: undefined, + previewUri: '/badge/build-passing-brightgreen.svg', + exampleUri: '/appveyor/ci/USER/REPO.svg', documentation: undefined, }, { title: 'AppVeyor branch', - previewUri: '/appveyor/ci/gruntjs/grunt/master.svg', - exampleUri: undefined, + previewUri: '/badge/build-passing-brightgreen.svg', + exampleUri: '/appveyor/ci/USER/REPO/BRANCH.svg', documentation: undefined, }, ]) From 6fae315f995c2dfc6d397329288a5f3866ba52c1 Mon Sep 17 00:00:00 2001 From: chris48s Date: Wed, 15 Aug 2018 19:02:55 +0100 Subject: [PATCH 09/25] coding standards --- services/npm/npm-license.service.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/npm/npm-license.service.js b/services/npm/npm-license.service.js index c7c8fbe1a072c..96c320c5b0879 100644 --- a/services/npm/npm-license.service.js +++ b/services/npm/npm-license.service.js @@ -21,12 +21,12 @@ module.exports = class NpmLicense extends NpmBase { return [ { exampleUrl: 'PACKAGE', - staticExample: this.render({licenses:['MIT']}), + staticExample: this.render({ licenses: ['MIT'] }), keywords: ['node'], }, { exampleUrl: 'PACKAGE', - staticExample: this.render({licenses:['MIT']}), + staticExample: this.render({ licenses: ['MIT'] }), query: { registry_uri: 'https://registry.npmjs.com' }, keywords: ['node'], }, From 6bee4c4f109425f3bec3d8dd55cf2000bc2a6538 Mon Sep 17 00:00:00 2001 From: chris48s Date: Sat, 18 Aug 2018 08:15:01 +0100 Subject: [PATCH 10/25] use :param instead of PARAM --- lib/all-badge-examples.spec.js | 4 ++-- services/apm/apm.service.js | 6 +++--- services/appveyor/appveyor.service.js | 4 ++-- services/cdnjs/cdnjs.service.js | 2 +- services/clojars/clojars.service.js | 2 +- services/gem/gem-downloads.service.js | 8 ++++---- services/gem/gem-owner.service.js | 2 +- services/gem/gem-rank.service.js | 4 ++-- services/gem/gem-version.service.js | 2 +- .../librariesio/librariesio-dependent-repos.service.js | 2 +- services/librariesio/librariesio-dependents.service.js | 2 +- services/librariesio/librariesio-sourcerank.service.js | 2 +- services/npm/npm-downloads.service.js | 2 +- services/npm/npm-license.service.js | 4 ++-- services/npm/npm-version.service.js | 10 +++++----- services/uptimerobot/uptimerobot-ratio.service.js | 4 ++-- services/uptimerobot/uptimerobot-status.service.js | 2 +- 17 files changed, 31 insertions(+), 31 deletions(-) diff --git a/lib/all-badge-examples.spec.js b/lib/all-badge-examples.spec.js index 3da7baa051dd1..47a9e1ac8c0b1 100644 --- a/lib/all-badge-examples.spec.js +++ b/lib/all-badge-examples.spec.js @@ -16,13 +16,13 @@ describe('The badge examples', function() { { title: 'AppVeyor', previewUri: '/badge/build-passing-brightgreen.svg', - exampleUri: '/appveyor/ci/USER/REPO.svg', + exampleUri: '/appveyor/ci/:user/:repo.svg', documentation: undefined, }, { title: 'AppVeyor branch', previewUri: '/badge/build-passing-brightgreen.svg', - exampleUri: '/appveyor/ci/USER/REPO/BRANCH.svg', + exampleUri: '/appveyor/ci/:user/:repo/:branch.svg', documentation: undefined, }, ]) diff --git a/services/apm/apm.service.js b/services/apm/apm.service.js index c0630097e3f8e..f6861abc79952 100644 --- a/services/apm/apm.service.js +++ b/services/apm/apm.service.js @@ -60,7 +60,7 @@ class APMDownloads extends BaseAPMService { static get examples() { return [ { - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ downloads: '60043' }), keywords: ['atom'], }, @@ -99,7 +99,7 @@ class APMVersion extends BaseAPMService { static get examples() { return [ { - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ version: '0.6.0' }), keywords: ['atom'], }, @@ -142,7 +142,7 @@ class APMLicense extends BaseAPMService { static get examples() { return [ { - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ license: 'MIT' }), keywords: ['atom'], }, diff --git a/services/appveyor/appveyor.service.js b/services/appveyor/appveyor.service.js index 8c2a39e807cea..186d74a149ca3 100644 --- a/services/appveyor/appveyor.service.js +++ b/services/appveyor/appveyor.service.js @@ -55,12 +55,12 @@ module.exports = class AppVeyor extends BaseJsonService { static get examples() { return [ { - exampleUrl: 'USER/REPO', + exampleUrl: ':user/:repo', staticExample: this.render({ status: 'success' }), }, { title: `${this.name} branch`, - exampleUrl: 'USER/REPO/BRANCH', + exampleUrl: ':user/:repo/:branch', staticExample: this.render({ status: 'success' }), }, ] diff --git a/services/cdnjs/cdnjs.service.js b/services/cdnjs/cdnjs.service.js index 34594c3545f3a..a0bb62fb76a10 100644 --- a/services/cdnjs/cdnjs.service.js +++ b/services/cdnjs/cdnjs.service.js @@ -59,7 +59,7 @@ module.exports = class Cdnjs extends BaseJsonService { static get examples() { return [ { - exampleUrl: 'LIBRARY', + exampleUrl: ':library', staticExample: this.render({ version: '1.5.2' }), keywords: ['cdn', 'cdnjs'], }, diff --git a/services/clojars/clojars.service.js b/services/clojars/clojars.service.js index 2063629428f34..e829db0066050 100644 --- a/services/clojars/clojars.service.js +++ b/services/clojars/clojars.service.js @@ -58,7 +58,7 @@ module.exports = class Clojars extends BaseJsonService { static get examples() { return [ { - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ clojar: 'clojar', version: '1.2' }), }, ] diff --git a/services/gem/gem-downloads.service.js b/services/gem/gem-downloads.service.js index f9992a6306c97..b4b6ea0eb1d28 100644 --- a/services/gem/gem-downloads.service.js +++ b/services/gem/gem-downloads.service.js @@ -122,7 +122,7 @@ module.exports = class GemDownloads extends BaseJsonService { return [ { title: 'Gem', - exampleUrl: 'dv/PACKAGE/stable', + exampleUrl: 'dv/:package/stable', staticExample: this.render({ label: 'downloads@stable', downloads: 70000, @@ -131,7 +131,7 @@ module.exports = class GemDownloads extends BaseJsonService { }, { title: 'Gem', - exampleUrl: 'dv/PACKAGE/VERSION', + exampleUrl: 'dv/:package/:version', staticExample: this.render({ label: 'downloads@4.1.0', downloads: 50000, @@ -140,7 +140,7 @@ module.exports = class GemDownloads extends BaseJsonService { }, { title: 'Gem', - exampleUrl: 'dtv/PACKAGE', + exampleUrl: 'dtv/:package', staticExample: this.render({ label: 'downloads@latest', downloads: 70000, @@ -149,7 +149,7 @@ module.exports = class GemDownloads extends BaseJsonService { }, { title: 'Gem', - exampleUrl: 'dt/PACKAGE', + exampleUrl: 'dt/:package', staticExample: this.render({ label: 'downloads', downloads: 900000 }), keywords: ['ruby'], }, diff --git a/services/gem/gem-owner.service.js b/services/gem/gem-owner.service.js index b4cca1699cca9..8923899aac2c6 100644 --- a/services/gem/gem-owner.service.js +++ b/services/gem/gem-owner.service.js @@ -49,7 +49,7 @@ module.exports = class GemOwner extends BaseJsonService { return [ { title: 'Gems', - exampleUrl: 'USER', + exampleUrl: ':user', staticExample: this.render({ count: 34 }), keywords: ['ruby'], }, diff --git a/services/gem/gem-rank.service.js b/services/gem/gem-rank.service.js index 5273b7433b825..4f6cd63aa9d7f 100644 --- a/services/gem/gem-rank.service.js +++ b/services/gem/gem-rank.service.js @@ -76,7 +76,7 @@ module.exports = class GemRank extends BaseJsonService { return [ { title: 'Gems', - exampleUrl: 'rt/PACKAGE', + exampleUrl: 'rt/:package', staticExample: this.render({ message: ordinalNumber(332), count: 332, @@ -85,7 +85,7 @@ module.exports = class GemRank extends BaseJsonService { }, { title: 'Gems', - exampleUrl: 'rd/PACKAGE', + exampleUrl: 'rd/:package', staticExample: this.render({ message: ordinalNumber(656) + ' daily', count: 656, diff --git a/services/gem/gem-version.service.js b/services/gem/gem-version.service.js index 4c4cc46feefc2..1956de6c5bd71 100644 --- a/services/gem/gem-version.service.js +++ b/services/gem/gem-version.service.js @@ -55,7 +55,7 @@ module.exports = class GemVersion extends BaseJsonService { return [ { title: 'Gem', - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ version: '2.1.0' }), keywords: ['ruby'], }, diff --git a/services/librariesio/librariesio-dependent-repos.service.js b/services/librariesio/librariesio-dependent-repos.service.js index fc3ebcb08fe35..7760cce5b1a16 100644 --- a/services/librariesio/librariesio-dependent-repos.service.js +++ b/services/librariesio/librariesio-dependent-repos.service.js @@ -23,7 +23,7 @@ class LibrariesIoDependentRepos extends LibrariesIoBase { return [ { title: 'Dependent repos (via libraries.io)', - exampleUrl: 'PLATFORM/LIBRARY', + exampleUrl: ':platform/:library', staticExample: this.render({ dependentReposCount: '84000' }), }, ] diff --git a/services/librariesio/librariesio-dependents.service.js b/services/librariesio/librariesio-dependents.service.js index 33b2dc667eefc..5e512ab85fd59 100644 --- a/services/librariesio/librariesio-dependents.service.js +++ b/services/librariesio/librariesio-dependents.service.js @@ -23,7 +23,7 @@ class LibrariesIoDependents extends LibrariesIoBase { return [ { title: 'Dependents (via libraries.io)', - exampleUrl: 'PLATFORM/LIBRARY', + exampleUrl: ':platform/:library', staticExample: this.render({ dependentCount: '2000' }), }, ] diff --git a/services/librariesio/librariesio-sourcerank.service.js b/services/librariesio/librariesio-sourcerank.service.js index 95359d4882ea9..334cd83e10425 100644 --- a/services/librariesio/librariesio-sourcerank.service.js +++ b/services/librariesio/librariesio-sourcerank.service.js @@ -24,7 +24,7 @@ class LibrariesIoSourcerank extends LibrariesIoBase { return [ { title: 'Libraries.io SourceRank', - exampleUrl: 'PLATFORM/LIBRARY', + exampleUrl: ':platform/:library', staticExample: this.render({ rank: 25 }), }, ] diff --git a/services/npm/npm-downloads.service.js b/services/npm/npm-downloads.service.js index 7c992a55e87b7..ee62e3f53417e 100644 --- a/services/npm/npm-downloads.service.js +++ b/services/npm/npm-downloads.service.js @@ -62,7 +62,7 @@ function DownloadsForInterval(interval) { return [ { title: 'npm', - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ downloads: 30000 }), keywords: ['node'], }, diff --git a/services/npm/npm-license.service.js b/services/npm/npm-license.service.js index 96c320c5b0879..dda1b6a7080a4 100644 --- a/services/npm/npm-license.service.js +++ b/services/npm/npm-license.service.js @@ -20,12 +20,12 @@ module.exports = class NpmLicense extends NpmBase { static get examples() { return [ { - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ licenses: ['MIT'] }), keywords: ['node'], }, { - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ licenses: ['MIT'] }), query: { registry_uri: 'https://registry.npmjs.com' }, keywords: ['node'], diff --git a/services/npm/npm-version.service.js b/services/npm/npm-version.service.js index cf24eedf57e3f..ef34a9ece859c 100644 --- a/services/npm/npm-version.service.js +++ b/services/npm/npm-version.service.js @@ -27,25 +27,25 @@ module.exports = class NpmVersion extends NpmBase { static get examples() { return [ { - exampleUrl: 'PACKAGE', + exampleUrl: ':package', staticExample: this.render({ tag: undefined, version: '6.3.0' }), keywords: ['node'], }, { title: 'npm (scoped)', - exampleUrl: '@SCOPE/PACKAGE', + exampleUrl: ':scope/:package', staticExample: this.render({ tag: undefined, version: '7.0.0' }), keywords: ['node'], }, { title: 'npm (tag)', - exampleUrl: 'PACKAGE/TAG', + exampleUrl: ':package/:tag', staticExample: this.render({ tag: 'latest', version: '6.3.0' }), keywords: ['node'], }, { title: 'npm (custom registry)', - exampleUrl: 'PACKAGE/TAG', + exampleUrl: ':package/:tag', staticExample: this.render({ tag: 'latest', version: '7.0.0' }), query: { registry_uri: 'https://registry.npmjs.com' }, keywords: ['node'], @@ -53,7 +53,7 @@ module.exports = class NpmVersion extends NpmBase { { title: 'npm (scoped with tag)', staticExample: this.render({ tag: 'latest', version: '6.3.0' }), - exampleUrl: '@SCOPE/PACKAGE/TAG', + exampleUrl: ':scope/:package/:tag', keywords: ['node'], }, ] diff --git a/services/uptimerobot/uptimerobot-ratio.service.js b/services/uptimerobot/uptimerobot-ratio.service.js index 45622557d2108..5d3c1d7147682 100644 --- a/services/uptimerobot/uptimerobot-ratio.service.js +++ b/services/uptimerobot/uptimerobot-ratio.service.js @@ -24,12 +24,12 @@ module.exports = class UptimeRobotRatio extends UptimeRobotBase { return [ { title: 'Uptime Robot ratio (30 days)', - exampleUrl: 'MONITOR-SPECIFIC-KEY', + exampleUrl: ':monitor-specific-key', staticExample: this.render({ ratio: 100 }), }, { title: 'Uptime Robot ratio (7 days)', - exampleUrl: '7/MONITOR-SPECIFIC-KEY', + exampleUrl: '7/:monitor-specific-key', staticExample: this.render({ ratio: 100 }), }, ] diff --git a/services/uptimerobot/uptimerobot-status.service.js b/services/uptimerobot/uptimerobot-status.service.js index 50dfb3fe8ca73..52fd865c83349 100644 --- a/services/uptimerobot/uptimerobot-status.service.js +++ b/services/uptimerobot/uptimerobot-status.service.js @@ -21,7 +21,7 @@ module.exports = class UptimeRobotStatus extends UptimeRobotBase { return [ { title: 'Uptime Robot status', - exampleUrl: 'MONITOR-SPECIFIC-KEY', + exampleUrl: ':monitor-specific-key', staticExample: this.render({ status: 2 }), }, ] From 960d6007c5a1156c5cf31baced46c608ff6be07d Mon Sep 17 00:00:00 2001 From: chris48s Date: Sun, 19 Aug 2018 15:46:34 +0100 Subject: [PATCH 11/25] clarify query params test --- services/base.spec.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/services/base.spec.js b/services/base.spec.js index 7a08b87273cd2..bc63a5e9b9326 100644 --- a/services/base.spec.js +++ b/services/base.spec.js @@ -16,7 +16,9 @@ require('../lib/register-chai-plugins.spec') class DummyService extends BaseService { static render({ namedParamA, queryParamA }) { - return { message: `Hello ${namedParamA}${queryParamA}` } + return { + message: `Hello namedParamA: ${namedParamA} with queryParamA: ${queryParamA}`, + } } async handle({ namedParamA }, { queryParamA }) { @@ -95,7 +97,9 @@ describe('BaseService', function() { { namedParamA: 'bar.bar.bar' }, { queryParamA: '!' } ) - expect(serviceData).to.deep.equal({ message: 'Hello bar.bar.bar!' }) + expect(serviceData).to.deep.equal({ + message: 'Hello namedParamA: bar.bar.bar with queryParamA: !', + }) }) describe('Logging', function() { @@ -302,7 +306,7 @@ describe('BaseService', function() { const expectedFormat = 'svg' expect(mockSendBadge).to.have.been.calledOnce expect(mockSendBadge).to.have.been.calledWith(expectedFormat, { - text: ['cat', 'Hello bar?'], + text: ['cat', 'Hello namedParamA: bar with queryParamA: ?'], colorscheme: 'lightgrey', template: undefined, logo: undefined, @@ -330,7 +334,8 @@ describe('BaseService', function() { }) expect(third).to.deep.equal({ title: 'DummyService', - previewUri: '/badge/cat-Hello%20foobar-lightgrey.svg', + previewUri: + '/badge/cat-Hello%20namedParamA%3A%20foo%20with%20queryParamA%3A%20bar-lightgrey.svg', exampleUri: '/foo/World.svg', documentation: undefined, }) From 23327ee1b436ccc19ba7097e58ed859e46c1c4dd Mon Sep 17 00:00:00 2001 From: chris48s Date: Sun, 19 Aug 2018 16:14:40 +0100 Subject: [PATCH 12/25] rename exampleUrl/Uri to placeholderUrl/Uri This makes no functional change - it just renames vars --- frontend/components/badge-examples.js | 10 ++++----- frontend/components/markup-modal.js | 6 +++--- lib/all-badge-examples.js | 21 ++++++++++--------- lib/all-badge-examples.spec.js | 4 ++-- services/apm/apm.service.js | 6 +++--- services/appveyor/appveyor.service.js | 4 ++-- services/base.js | 8 +++---- services/base.spec.js | 8 +++---- services/cdnjs/cdnjs.service.js | 2 +- services/clojars/clojars.service.js | 2 +- services/gem/gem-downloads.service.js | 8 +++---- services/gem/gem-owner.service.js | 2 +- services/gem/gem-rank.service.js | 4 ++-- services/gem/gem-version.service.js | 2 +- .../librariesio-dependent-repos.service.js | 2 +- .../librariesio-dependents.service.js | 2 +- .../librariesio-sourcerank.service.js | 2 +- services/npm/npm-downloads.service.js | 2 +- services/npm/npm-license.service.js | 4 ++-- services/npm/npm-version.service.js | 10 ++++----- .../uptimerobot/uptimerobot-ratio.service.js | 4 ++-- .../uptimerobot/uptimerobot-status.service.js | 2 +- 22 files changed, 58 insertions(+), 57 deletions(-) diff --git a/frontend/components/badge-examples.js b/frontend/components/badge-examples.js index 3b7cca205d084..43098a34a2cbd 100644 --- a/frontend/components/badge-examples.js +++ b/frontend/components/badge-examples.js @@ -7,7 +7,7 @@ import resolveBadgeUrl from '../lib/badge-url' const Badge = ({ title, previewUri, - exampleUri, + placeholderUri, documentation, baseUri, longCache, @@ -15,7 +15,7 @@ const Badge = ({ onClick, }) => { const handleClick = onClick - ? () => onClick({ title, previewUri, exampleUri, documentation }) + ? () => onClick({ title, previewUri, placeholderUri, documentation }) : undefined const previewImage = previewUri ? ( @@ -29,7 +29,7 @@ const Badge = ({ '\u00a0' ) // non-breaking space const resolvedExampleUri = resolveBadgeUrl( - exampleUri || previewUri, + placeholderUri || previewUri, baseUri, { longCache: false } ) @@ -60,7 +60,7 @@ const Badge = ({ Badge.propTypes = { title: PropTypes.string.isRequired, previewUri: PropTypes.string, - exampleUri: PropTypes.string, + placeholderUri: PropTypes.string, documentation: PropTypes.string, baseUri: PropTypes.string, longCache: PropTypes.bool.isRequired, @@ -102,7 +102,7 @@ Category.propTypes = { PropTypes.shape({ title: PropTypes.string.isRequired, previewUri: PropTypes.string, - exampleUri: PropTypes.string, + placeholderUri: PropTypes.string, documentation: PropTypes.string, }) ).isRequired, diff --git a/frontend/components/markup-modal.js b/frontend/components/markup-modal.js index 1e7231e73fdcf..50135317f65b7 100644 --- a/frontend/components/markup-modal.js +++ b/frontend/components/markup-modal.js @@ -11,7 +11,7 @@ export default class MarkupModal extends React.Component { example: PropTypes.shape({ title: PropTypes.string.isRequired, previewUri: PropTypes.string, - exampleUri: PropTypes.string, + placeholderUri: PropTypes.string, documentation: PropTypes.string, link: PropTypes.string, }), @@ -38,10 +38,10 @@ export default class MarkupModal extends React.Component { // Transfer `badgeUri` and `link` into state so they can be edited by the // user. - const { exampleUri, previewUri, link } = example + const { placeholderUri, previewUri, link } = example this.setState({ badgeUri: resolveBadgeUrl( - exampleUri || previewUri, + placeholderUri || previewUri, baseUri || window.location.href ), link, diff --git a/lib/all-badge-examples.js b/lib/all-badge-examples.js index c50fce816880e..590b490a4775b 100644 --- a/lib/all-badge-examples.js +++ b/lib/all-badge-examples.js @@ -120,22 +120,22 @@ const allBadgeExamples = [ { title: 'Travis (.org)', previewUri: '/travis/rust-lang/rust.svg', - exampleUri: '/travis/USER/REPO.svg', + placeholderUri: '/travis/USER/REPO.svg', }, { title: 'Travis (.org) branch', previewUri: '/travis/rust-lang/rust/master.svg', - exampleUri: '/travis/USER/REPO/BRANCH.svg', + placeholderUri: '/travis/USER/REPO/BRANCH.svg', }, { title: 'Travis (.com)', previewUri: '/travis/com/ivandelabeldad/rackian-gateway.svg', - exampleUri: '/travis/com/USER/REPO.svg', + placeholderUri: '/travis/com/USER/REPO.svg', }, { title: 'Travis (.com) branch', previewUri: '/travis/com/ivandelabeldad/rackian-gateway/master.svg', - exampleUri: '/travis/com/USER/REPO/BRANCH.svg', + placeholderUri: '/travis/com/USER/REPO/BRANCH.svg', }, { title: 'Wercker', @@ -152,7 +152,7 @@ const allBadgeExamples = [ { title: 'TeamCity (full build status)', keywords: ['teamcity'], - exampleUri: '/teamcity/http/teamcity.jetbrains.com/e/bt345.svg', + placeholderUri: '/teamcity/http/teamcity.jetbrains.com/e/bt345.svg', }, { title: 'AppVeyor tests', @@ -188,7 +188,7 @@ const allBadgeExamples = [ title: 'CircleCI token', previewUri: '/circleci/project/github/RedSparr0w/node-csgo-parser/master.svg', - exampleUri: + placeholderUri: '/circleci/token/YOURTOKEN/project/github/RedSparr0w/node-csgo-parser/master.svg', }, { @@ -301,7 +301,7 @@ const allBadgeExamples = [ { title: 'Codecov private', previewUri: '/codecov/c/github/codecov/example-python.svg', - exampleUri: + placeholderUri: '/codecov/c/token/YOURTOKEN/github/codecov/example-python.svg', }, { @@ -340,7 +340,7 @@ const allBadgeExamples = [ title: 'Dockbit', previewUri: '/dockbit/DockbitStatus/health.svg?token=TvavttxFHJ4qhnKstDxrvBXM', - exampleUri: + placeholderUri: '/dockbit/ORGANIZATION_NAME/PIPELINE_NAME.svg?token=PIPELINE_TOKEN', }, { @@ -361,7 +361,8 @@ const allBadgeExamples = [ title: 'Bitrise', previewUri: '/bitrise/cde737473028420d/master.svg?token=GCIdEzacE4GW32jLVrZb7A', - exampleUri: '/bitrise/APP-ID/BRANCH.svg?token=APP-STATUS-BADGE-TOKEN', + placeholderUri: + '/bitrise/APP-ID/BRANCH.svg?token=APP-STATUS-BADGE-TOKEN', }, { title: 'Code Climate', @@ -1406,7 +1407,7 @@ const allBadgeExamples = [ { title: 'iTunes App Store', previewUri: '/itunes/v/803453959.svg', - exampleUri: '/itunes/v/BUNDLE_ID.svg', + placeholderUri: '/itunes/v/BUNDLE_ID.svg', }, { title: 'JitPack', diff --git a/lib/all-badge-examples.spec.js b/lib/all-badge-examples.spec.js index 47a9e1ac8c0b1..f58eb31ab708c 100644 --- a/lib/all-badge-examples.spec.js +++ b/lib/all-badge-examples.spec.js @@ -16,13 +16,13 @@ describe('The badge examples', function() { { title: 'AppVeyor', previewUri: '/badge/build-passing-brightgreen.svg', - exampleUri: '/appveyor/ci/:user/:repo.svg', + placeholderUri: '/appveyor/ci/:user/:repo.svg', documentation: undefined, }, { title: 'AppVeyor branch', previewUri: '/badge/build-passing-brightgreen.svg', - exampleUri: '/appveyor/ci/:user/:repo/:branch.svg', + placeholderUri: '/appveyor/ci/:user/:repo/:branch.svg', documentation: undefined, }, ]) diff --git a/services/apm/apm.service.js b/services/apm/apm.service.js index f6861abc79952..9c7b4d59bf85b 100644 --- a/services/apm/apm.service.js +++ b/services/apm/apm.service.js @@ -60,7 +60,7 @@ class APMDownloads extends BaseAPMService { static get examples() { return [ { - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ downloads: '60043' }), keywords: ['atom'], }, @@ -99,7 +99,7 @@ class APMVersion extends BaseAPMService { static get examples() { return [ { - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ version: '0.6.0' }), keywords: ['atom'], }, @@ -142,7 +142,7 @@ class APMLicense extends BaseAPMService { static get examples() { return [ { - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ license: 'MIT' }), keywords: ['atom'], }, diff --git a/services/appveyor/appveyor.service.js b/services/appveyor/appveyor.service.js index 186d74a149ca3..d4e1fe2967724 100644 --- a/services/appveyor/appveyor.service.js +++ b/services/appveyor/appveyor.service.js @@ -55,12 +55,12 @@ module.exports = class AppVeyor extends BaseJsonService { static get examples() { return [ { - exampleUrl: ':user/:repo', + placeholderUrl: ':user/:repo', staticExample: this.render({ status: 'success' }), }, { title: `${this.name} branch`, - exampleUrl: ':user/:repo/:branch', + placeholderUrl: ':user/:repo/:branch', staticExample: this.render({ status: 'success' }), }, ] diff --git a/services/base.js b/services/base.js index 2cc2236146a17..60a220417831c 100644 --- a/services/base.js +++ b/services/base.js @@ -107,7 +107,7 @@ class BaseService { * schema in `lib/all-badge-examples.js`. Four keys are supported: * - title * - previewUrl - * - exampleUrl + * - placeholderUrl * - documentation */ static prepareExamples() { @@ -117,7 +117,7 @@ class BaseService { staticExample, previewUrl, query, - exampleUrl, + placeholderUrl, documentation, }) => { if (!previewUrl && !staticExample) { @@ -136,8 +136,8 @@ class BaseService { previewUri: staticExample ? `${this._makeStaticExampleUrl(staticExample)}.svg` : `${this._makeFullUrl(previewUrl, query)}.svg${suffix}`, - exampleUri: exampleUrl - ? `${this._makeFullUrl(exampleUrl, query)}.svg${suffix}` + placeholderUri: placeholderUrl + ? `${this._makeFullUrl(placeholderUrl, query)}.svg${suffix}` : undefined, documentation, } diff --git a/services/base.spec.js b/services/base.spec.js index bc63a5e9b9326..f7f349b051ac3 100644 --- a/services/base.spec.js +++ b/services/base.spec.js @@ -34,7 +34,7 @@ class DummyService extends BaseService { { previewUrl: 'World' }, { previewUrl: 'World', query: { queryParamA: '!!!' } }, { - exampleUrl: 'World', + placeholderUrl: 'World', staticExample: this.render({ namedParamA: 'foo', queryParamA: 'bar' }), }, ] @@ -323,20 +323,20 @@ describe('BaseService', function() { expect(first).to.deep.equal({ title: 'DummyService', previewUri: '/foo/World.svg', - exampleUri: undefined, + placeholderUri: undefined, documentation: undefined, }) expect(second).to.deep.equal({ title: 'DummyService', previewUri: '/foo/World.svg?queryParamA=%21%21%21', - exampleUri: undefined, + placeholderUri: undefined, documentation: undefined, }) expect(third).to.deep.equal({ title: 'DummyService', previewUri: '/badge/cat-Hello%20namedParamA%3A%20foo%20with%20queryParamA%3A%20bar-lightgrey.svg', - exampleUri: '/foo/World.svg', + placeholderUri: '/foo/World.svg', documentation: undefined, }) }) diff --git a/services/cdnjs/cdnjs.service.js b/services/cdnjs/cdnjs.service.js index a0bb62fb76a10..754ee1e7c380d 100644 --- a/services/cdnjs/cdnjs.service.js +++ b/services/cdnjs/cdnjs.service.js @@ -59,7 +59,7 @@ module.exports = class Cdnjs extends BaseJsonService { static get examples() { return [ { - exampleUrl: ':library', + placeholderUrl: ':library', staticExample: this.render({ version: '1.5.2' }), keywords: ['cdn', 'cdnjs'], }, diff --git a/services/clojars/clojars.service.js b/services/clojars/clojars.service.js index e829db0066050..a10895b600006 100644 --- a/services/clojars/clojars.service.js +++ b/services/clojars/clojars.service.js @@ -58,7 +58,7 @@ module.exports = class Clojars extends BaseJsonService { static get examples() { return [ { - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ clojar: 'clojar', version: '1.2' }), }, ] diff --git a/services/gem/gem-downloads.service.js b/services/gem/gem-downloads.service.js index b4b6ea0eb1d28..92160216322bf 100644 --- a/services/gem/gem-downloads.service.js +++ b/services/gem/gem-downloads.service.js @@ -122,7 +122,7 @@ module.exports = class GemDownloads extends BaseJsonService { return [ { title: 'Gem', - exampleUrl: 'dv/:package/stable', + placeholderUrl: 'dv/:package/stable', staticExample: this.render({ label: 'downloads@stable', downloads: 70000, @@ -131,7 +131,7 @@ module.exports = class GemDownloads extends BaseJsonService { }, { title: 'Gem', - exampleUrl: 'dv/:package/:version', + placeholderUrl: 'dv/:package/:version', staticExample: this.render({ label: 'downloads@4.1.0', downloads: 50000, @@ -140,7 +140,7 @@ module.exports = class GemDownloads extends BaseJsonService { }, { title: 'Gem', - exampleUrl: 'dtv/:package', + placeholderUrl: 'dtv/:package', staticExample: this.render({ label: 'downloads@latest', downloads: 70000, @@ -149,7 +149,7 @@ module.exports = class GemDownloads extends BaseJsonService { }, { title: 'Gem', - exampleUrl: 'dt/:package', + placeholderUrl: 'dt/:package', staticExample: this.render({ label: 'downloads', downloads: 900000 }), keywords: ['ruby'], }, diff --git a/services/gem/gem-owner.service.js b/services/gem/gem-owner.service.js index 8923899aac2c6..f01a6b37470e5 100644 --- a/services/gem/gem-owner.service.js +++ b/services/gem/gem-owner.service.js @@ -49,7 +49,7 @@ module.exports = class GemOwner extends BaseJsonService { return [ { title: 'Gems', - exampleUrl: ':user', + placeholderUrl: ':user', staticExample: this.render({ count: 34 }), keywords: ['ruby'], }, diff --git a/services/gem/gem-rank.service.js b/services/gem/gem-rank.service.js index 4f6cd63aa9d7f..bb103c3938b42 100644 --- a/services/gem/gem-rank.service.js +++ b/services/gem/gem-rank.service.js @@ -76,7 +76,7 @@ module.exports = class GemRank extends BaseJsonService { return [ { title: 'Gems', - exampleUrl: 'rt/:package', + placeholderUrl: 'rt/:package', staticExample: this.render({ message: ordinalNumber(332), count: 332, @@ -85,7 +85,7 @@ module.exports = class GemRank extends BaseJsonService { }, { title: 'Gems', - exampleUrl: 'rd/:package', + placeholderUrl: 'rd/:package', staticExample: this.render({ message: ordinalNumber(656) + ' daily', count: 656, diff --git a/services/gem/gem-version.service.js b/services/gem/gem-version.service.js index 1956de6c5bd71..33265eae49c46 100644 --- a/services/gem/gem-version.service.js +++ b/services/gem/gem-version.service.js @@ -55,7 +55,7 @@ module.exports = class GemVersion extends BaseJsonService { return [ { title: 'Gem', - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ version: '2.1.0' }), keywords: ['ruby'], }, diff --git a/services/librariesio/librariesio-dependent-repos.service.js b/services/librariesio/librariesio-dependent-repos.service.js index 7760cce5b1a16..f3b45c88ea906 100644 --- a/services/librariesio/librariesio-dependent-repos.service.js +++ b/services/librariesio/librariesio-dependent-repos.service.js @@ -23,7 +23,7 @@ class LibrariesIoDependentRepos extends LibrariesIoBase { return [ { title: 'Dependent repos (via libraries.io)', - exampleUrl: ':platform/:library', + placeholderUrl: ':platform/:library', staticExample: this.render({ dependentReposCount: '84000' }), }, ] diff --git a/services/librariesio/librariesio-dependents.service.js b/services/librariesio/librariesio-dependents.service.js index 5e512ab85fd59..e953370666d91 100644 --- a/services/librariesio/librariesio-dependents.service.js +++ b/services/librariesio/librariesio-dependents.service.js @@ -23,7 +23,7 @@ class LibrariesIoDependents extends LibrariesIoBase { return [ { title: 'Dependents (via libraries.io)', - exampleUrl: ':platform/:library', + placeholderUrl: ':platform/:library', staticExample: this.render({ dependentCount: '2000' }), }, ] diff --git a/services/librariesio/librariesio-sourcerank.service.js b/services/librariesio/librariesio-sourcerank.service.js index 334cd83e10425..11dd5a9e24c6e 100644 --- a/services/librariesio/librariesio-sourcerank.service.js +++ b/services/librariesio/librariesio-sourcerank.service.js @@ -24,7 +24,7 @@ class LibrariesIoSourcerank extends LibrariesIoBase { return [ { title: 'Libraries.io SourceRank', - exampleUrl: ':platform/:library', + placeholderUrl: ':platform/:library', staticExample: this.render({ rank: 25 }), }, ] diff --git a/services/npm/npm-downloads.service.js b/services/npm/npm-downloads.service.js index ee62e3f53417e..4e8ac7db2d745 100644 --- a/services/npm/npm-downloads.service.js +++ b/services/npm/npm-downloads.service.js @@ -62,7 +62,7 @@ function DownloadsForInterval(interval) { return [ { title: 'npm', - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ downloads: 30000 }), keywords: ['node'], }, diff --git a/services/npm/npm-license.service.js b/services/npm/npm-license.service.js index dda1b6a7080a4..8b2022e63f0cb 100644 --- a/services/npm/npm-license.service.js +++ b/services/npm/npm-license.service.js @@ -20,12 +20,12 @@ module.exports = class NpmLicense extends NpmBase { static get examples() { return [ { - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ licenses: ['MIT'] }), keywords: ['node'], }, { - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ licenses: ['MIT'] }), query: { registry_uri: 'https://registry.npmjs.com' }, keywords: ['node'], diff --git a/services/npm/npm-version.service.js b/services/npm/npm-version.service.js index ef34a9ece859c..53c4a8f41c859 100644 --- a/services/npm/npm-version.service.js +++ b/services/npm/npm-version.service.js @@ -27,25 +27,25 @@ module.exports = class NpmVersion extends NpmBase { static get examples() { return [ { - exampleUrl: ':package', + placeholderUrl: ':package', staticExample: this.render({ tag: undefined, version: '6.3.0' }), keywords: ['node'], }, { title: 'npm (scoped)', - exampleUrl: ':scope/:package', + placeholderUrl: ':scope/:package', staticExample: this.render({ tag: undefined, version: '7.0.0' }), keywords: ['node'], }, { title: 'npm (tag)', - exampleUrl: ':package/:tag', + placeholderUrl: ':package/:tag', staticExample: this.render({ tag: 'latest', version: '6.3.0' }), keywords: ['node'], }, { title: 'npm (custom registry)', - exampleUrl: ':package/:tag', + placeholderUrl: ':package/:tag', staticExample: this.render({ tag: 'latest', version: '7.0.0' }), query: { registry_uri: 'https://registry.npmjs.com' }, keywords: ['node'], @@ -53,7 +53,7 @@ module.exports = class NpmVersion extends NpmBase { { title: 'npm (scoped with tag)', staticExample: this.render({ tag: 'latest', version: '6.3.0' }), - exampleUrl: ':scope/:package/:tag', + placeholderUrl: ':scope/:package/:tag', keywords: ['node'], }, ] diff --git a/services/uptimerobot/uptimerobot-ratio.service.js b/services/uptimerobot/uptimerobot-ratio.service.js index 5d3c1d7147682..dbed0c41fb760 100644 --- a/services/uptimerobot/uptimerobot-ratio.service.js +++ b/services/uptimerobot/uptimerobot-ratio.service.js @@ -24,12 +24,12 @@ module.exports = class UptimeRobotRatio extends UptimeRobotBase { return [ { title: 'Uptime Robot ratio (30 days)', - exampleUrl: ':monitor-specific-key', + placeholderUrl: ':monitor-specific-key', staticExample: this.render({ ratio: 100 }), }, { title: 'Uptime Robot ratio (7 days)', - exampleUrl: '7/:monitor-specific-key', + placeholderUrl: '7/:monitor-specific-key', staticExample: this.render({ ratio: 100 }), }, ] diff --git a/services/uptimerobot/uptimerobot-status.service.js b/services/uptimerobot/uptimerobot-status.service.js index 52fd865c83349..7870902c40257 100644 --- a/services/uptimerobot/uptimerobot-status.service.js +++ b/services/uptimerobot/uptimerobot-status.service.js @@ -21,7 +21,7 @@ module.exports = class UptimeRobotStatus extends UptimeRobotBase { return [ { title: 'Uptime Robot status', - exampleUrl: ':monitor-specific-key', + placeholderUrl: ':monitor-specific-key', staticExample: this.render({ status: 2 }), }, ] From f12351a4f948fc6c03af8c38238ce0a2d011cda0 Mon Sep 17 00:00:00 2001 From: chris48s Date: Sun, 19 Aug 2018 20:22:49 +0100 Subject: [PATCH 13/25] provide an example API call for badges using static example --- frontend/components/badge-examples.js | 12 +++++++++++- frontend/components/markup-modal.js | 8 +++++++- lib/all-badge-examples.js | 14 +++++++++++++- lib/all-badge-examples.spec.js | 2 ++ services/apm/apm.service.js | 3 +++ services/appveyor/appveyor.service.js | 2 ++ services/base.js | 8 ++++++-- services/base.spec.js | 8 ++++++-- services/cdnjs/cdnjs.service.js | 1 + services/clojars/clojars.service.js | 1 + services/gem/gem-downloads.service.js | 4 ++++ services/gem/gem-owner.service.js | 1 + services/gem/gem-rank.service.js | 2 ++ services/gem/gem-version.service.js | 1 + .../librariesio-dependent-repos.service.js | 1 + .../librariesio/librariesio-dependents.service.js | 1 + .../librariesio/librariesio-sourcerank.service.js | 1 + services/npm/npm-downloads.service.js | 1 + services/npm/npm-license.service.js | 2 ++ services/npm/npm-version.service.js | 5 +++++ services/uptimerobot/uptimerobot-ratio.service.js | 2 ++ services/uptimerobot/uptimerobot-status.service.js | 1 + 22 files changed, 74 insertions(+), 7 deletions(-) diff --git a/frontend/components/badge-examples.js b/frontend/components/badge-examples.js index 43098a34a2cbd..844b2de38c9b7 100644 --- a/frontend/components/badge-examples.js +++ b/frontend/components/badge-examples.js @@ -6,6 +6,7 @@ import resolveBadgeUrl from '../lib/badge-url' const Badge = ({ title, + exampleUri, previewUri, placeholderUri, documentation, @@ -15,7 +16,14 @@ const Badge = ({ onClick, }) => { const handleClick = onClick - ? () => onClick({ title, previewUri, placeholderUri, documentation }) + ? () => + onClick({ + title, + exampleUri, + previewUri, + placeholderUri, + documentation, + }) : undefined const previewImage = previewUri ? ( @@ -59,6 +67,7 @@ const Badge = ({ } Badge.propTypes = { title: PropTypes.string.isRequired, + exampleUri: PropTypes.string, previewUri: PropTypes.string, placeholderUri: PropTypes.string, documentation: PropTypes.string, @@ -101,6 +110,7 @@ Category.propTypes = { examples: PropTypes.arrayOf( PropTypes.shape({ title: PropTypes.string.isRequired, + exampleUri: PropTypes.string, previewUri: PropTypes.string, placeholderUri: PropTypes.string, documentation: PropTypes.string, diff --git a/frontend/components/markup-modal.js b/frontend/components/markup-modal.js index 50135317f65b7..0f7d97c651e5d 100644 --- a/frontend/components/markup-modal.js +++ b/frontend/components/markup-modal.js @@ -10,6 +10,7 @@ export default class MarkupModal extends React.Component { static propTypes = { example: PropTypes.shape({ title: PropTypes.string.isRequired, + exampleUri: PropTypes.string, previewUri: PropTypes.string, placeholderUri: PropTypes.string, documentation: PropTypes.string, @@ -20,6 +21,7 @@ export default class MarkupModal extends React.Component { } state = { + exampleUri: null, badgeUri: null, link: null, style: 'flat', @@ -38,8 +40,11 @@ export default class MarkupModal extends React.Component { // Transfer `badgeUri` and `link` into state so they can be edited by the // user. - const { placeholderUri, previewUri, link } = example + const { exampleUri, placeholderUri, previewUri, link } = example this.setState({ + exampleUri: exampleUri + ? resolveBadgeUrl(exampleUri, baseUri || window.location.href) + : null, badgeUri: resolveBadgeUrl( placeholderUri || previewUri, baseUri || window.location.href @@ -126,6 +131,7 @@ export default class MarkupModal extends React.Component { />

+ {this.state.exampleUri &&

Example: {this.state.exampleUri}

}

- {this.state.exampleUri &&

Example: {this.state.exampleUri}

} + {this.state.exampleUri && ( +

+ Example  + + + +

+ )}