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
+
+
+
+
+ )}