Skip to content

Commit eef3d36

Browse files
authoredJan 30, 2019
Convert remaining preview URLs (#2887)
Close #1961
1 parent 27b0532 commit eef3d36

25 files changed

+504
-93
lines changed
 

‎core/badge-urls/make-badge-url.js

-3
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ function staticBadgeUrl({
6262
namedLogo,
6363
format = 'svg',
6464
}) {
65-
if (!label || !message) {
66-
throw Error('label and message are required')
67-
}
6865
const path = [label, message, color].map(encodeField).join('-')
6966
const outQueryString = queryString.stringify({
7067
style,

‎core/badge-urls/make-badge-url.spec.js

+11
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,16 @@ describe('Badge URL generation functions', function() {
6767
message: 'abc-abc',
6868
color: 'blue',
6969
}).expect('/badge/123--123-abc--abc-blue.svg')
70+
given({
71+
label: '123-123',
72+
message: '',
73+
color: 'blue',
74+
style: 'social',
75+
}).expect('/badge/123--123--blue.svg?style=social')
76+
given({
77+
label: '',
78+
message: 'blue',
79+
color: 'blue',
80+
}).expect('/badge/-blue-blue.svg')
7081
})
7182
})

‎core/base-service/service-definitions.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ const objectOfKeyValues = Joi.object()
1313

1414
const staticBadgeContent = Joi.object({
1515
label: Joi.string(),
16-
message: Joi.string().required(),
16+
message: Joi.string()
17+
.allow('')
18+
.required(),
1719
color: Joi.string().required(),
1820
style: Joi.string(),
1921
namedLogo: Joi.string(),

‎services/appveyor/appveyor-tests.service.js

+41-4
Original file line numberDiff line numberDiff line change
@@ -42,28 +42,65 @@ module.exports = class AppVeyorTests extends AppVeyorBase {
4242
return [
4343
{
4444
title: 'AppVeyor tests',
45-
previewUrl: 'NZSmartie/coap-net-iu0to',
45+
pattern: ':user/:repo',
46+
namedParams: {
47+
user: 'NZSmartie',
48+
repo: 'coap-net-iu0to',
49+
},
50+
staticPreview: {
51+
label: 'tests',
52+
message: '477 passed, 2 failed',
53+
color: 'red',
54+
},
4655
documentation,
4756
},
4857
{
4958
title: 'AppVeyor tests branch',
50-
previewUrl: 'NZSmartie/coap-net-iu0to/master',
59+
pattern: ':user/:repo/:branch',
60+
namedParams: {
61+
user: 'NZSmartie',
62+
repo: 'coap-net-iu0to',
63+
branch: 'master',
64+
},
65+
staticPreview: {
66+
label: 'tests',
67+
message: '477 passed, 2 failed',
68+
color: 'red',
69+
},
5170
documentation,
5271
},
5372
{
5473
title: 'AppVeyor tests (compact)',
55-
previewUrl: 'NZSmartie/coap-net-iu0to',
74+
pattern: ':user/:repo',
75+
namedParams: {
76+
user: 'NZSmartie',
77+
repo: 'coap-net-iu0to',
78+
},
5679
queryParams: { compact_message: null },
80+
staticPreview: {
81+
label: 'tests',
82+
message: '✔ 477 | ✘ 2',
83+
color: 'red',
84+
},
5785
documentation,
5886
},
5987
{
6088
title: 'AppVeyor tests with custom labels',
61-
previewUrl: 'NZSmartie/coap-net-iu0to',
89+
pattern: ':user/:repo',
90+
namedParams: {
91+
user: 'NZSmartie',
92+
repo: 'coap-net-iu0to',
93+
},
6294
queryParams: {
6395
passed_label: 'good',
6496
failed_label: 'bad',
6597
skipped_label: 'n/a',
6698
},
99+
staticPreview: {
100+
label: 'tests',
101+
message: '477 good, 2 bad',
102+
color: 'red',
103+
},
67104
documentation,
68105
},
69106
]

‎services/cocoapods/cocoapods-license.service.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ module.exports = class CocoapodsLicense extends LegacyService {
1010
static get route() {
1111
return {
1212
base: 'cocoapods/l',
13-
pattern: ':packageName',
13+
pattern: ':spec',
1414
}
1515
}
1616

1717
static get examples() {
1818
return [
1919
{
2020
title: 'Cocoapods',
21-
namedParams: { packageName: 'AFNetworking' },
21+
namedParams: { spec: 'AFNetworking' },
2222
staticPreview: { label: 'license', message: 'MIT', color: '000' },
2323
},
2424
]

‎services/cocoapods/cocoapods-platform.service.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ module.exports = class CocoapodsPlatform extends LegacyService {
1010
static get route() {
1111
return {
1212
base: 'cocoapods/p',
13-
pattern: ':packageName',
13+
pattern: ':spec',
1414
}
1515
}
1616

1717
static get examples() {
1818
return [
1919
{
20-
title: 'Cocoapods',
21-
namedParams: { packageName: 'AFNetworking' },
20+
title: 'Cocoapods platforms',
21+
namedParams: { spec: 'AFNetworking' },
2222
staticPreview: {
2323
label: 'platform',
2424
message: 'ios | osx | watchos | tvos',

‎services/cocoapods/cocoapods-version.service.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@ module.exports = class CocoapodsVersion extends LegacyService {
1818
return [
1919
{
2020
title: 'Cocoapods',
21-
previewUrl: 'AFNetworking',
21+
namedParams: {
22+
spec: 'AFNetworking',
23+
},
24+
staticPreview: {
25+
label: 'pod',
26+
message: 'v3.2.1',
27+
color: 'blue',
28+
},
2229
},
2330
]
2431
}

‎services/codeship/codeship.service.js

+21-4
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,36 @@ module.exports = class Codeship extends LegacyService {
1717
static get route() {
1818
return {
1919
base: 'codeship',
20-
pattern: '',
20+
pattern: ':projectId/:branch*',
2121
}
2222
}
2323

2424
static get examples() {
2525
return [
2626
{
2727
title: 'Codeship',
28-
previewUrl: 'd6c1ddd0-16a3-0132-5f85-2e35c05e22b1',
28+
pattern: ':projectId',
29+
namedParams: {
30+
projectId: 'd6c1ddd0-16a3-0132-5f85-2e35c05e22b1',
31+
},
32+
staticPreview: {
33+
label: 'build',
34+
message: 'passing',
35+
color: 'brightgreen',
36+
},
2937
},
3038
{
31-
title: 'Codeship',
32-
previewUrl: 'd6c1ddd0-16a3-0132-5f85-2e35c05e22b1/master',
39+
title: 'Codeship (branch)',
40+
pattern: ':projectId/:branch',
41+
namedParams: {
42+
projectId: 'd6c1ddd0-16a3-0132-5f85-2e35c05e22b1',
43+
branch: 'master',
44+
},
45+
staticPreview: {
46+
label: 'build',
47+
message: 'passing',
48+
color: 'brightgreen',
49+
},
3350
},
3451
]
3552
}

‎services/continuousphp/continuousphp.service.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,26 @@ module.exports = class ContinuousPhp extends LegacyService {
1717
static get route() {
1818
return {
1919
base: 'continuousphp',
20-
pattern: '',
20+
pattern: ':provider/:user/:repo/:branch*',
2121
}
2222
}
2323

2424
static get examples() {
2525
return [
2626
{
2727
title: 'continuousphp',
28-
previewUrl: 'git-hub/doctrine/dbal/master',
28+
pattern: ':provider/:user/:repo/:branch',
29+
namedParams: {
30+
provider: 'git-hub',
31+
user: 'doctrine',
32+
repo: 'dbal',
33+
branch: 'master',
34+
},
35+
staticPreview: {
36+
label: 'build',
37+
message: 'passing',
38+
color: 'brightgreen',
39+
},
2940
},
3041
]
3142
}

‎services/github/github-forks.service.js

+16-2
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,27 @@ module.exports = class GithubForks extends LegacyService {
3030
return [
3131
{
3232
title: 'GitHub forks',
33-
previewUrl: 'badges/shields',
34-
queryParams: { style: 'social', label: 'Fork' },
33+
namedParams: {
34+
user: 'badges',
35+
repo: 'shields',
36+
},
37+
staticPreview: {
38+
label: 'Fork',
39+
message: '1639',
40+
style: 'social',
41+
},
42+
queryParams: { label: 'Fork' },
3543
documentation,
3644
},
3745
]
3846
}
3947

48+
static get defaultBadgeData() {
49+
return {
50+
namedLogo: 'github',
51+
}
52+
}
53+
4054
static registerLegacyRouteHandler({ camp, cache, githubApiProvider }) {
4155
camp.route(
4256
/^\/github\/forks\/([^/]+)\/([^/]+)\.(svg|png|gif|jpg|json)$/,

‎services/github/github-stars.service.js

+16-2
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,27 @@ module.exports = class GithubStars extends LegacyService {
3131
return [
3232
{
3333
title: 'GitHub stars',
34-
previewUrl: 'badges/shields',
35-
queryParams: { style: 'social', label: 'Stars' },
34+
namedParams: {
35+
user: 'badges',
36+
repo: 'shields',
37+
},
38+
queryParams: { style: 'social' },
39+
staticPreview: {
40+
label: 'Stars',
41+
message: '7k',
42+
style: 'social',
43+
},
3644
documentation,
3745
},
3846
]
3947
}
4048

49+
static get defaultBadgeData() {
50+
return {
51+
namedLogo: 'github',
52+
}
53+
}
54+
4155
static registerLegacyRouteHandler({ camp, cache, githubApiProvider }) {
4256
camp.route(
4357
/^\/github\/stars\/([^/]+)\/([^/]+)\.(svg|png|gif|jpg|json)$/,

‎services/github/github-watchers.service.js

+16-2
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,27 @@ module.exports = class GithubWatchers extends LegacyService {
3030
return [
3131
{
3232
title: 'GitHub watchers',
33-
previewUrl: 'badges/shields',
34-
queryParams: { style: 'social', label: 'Watch' },
33+
namedParams: {
34+
user: 'badges',
35+
repo: 'shields',
36+
},
37+
staticPreview: {
38+
label: 'Watch',
39+
message: '96',
40+
style: 'social',
41+
},
42+
queryParams: { label: 'Watch' },
3543
documentation,
3644
},
3745
]
3846
}
3947

48+
static get defaultBadgeData() {
49+
return {
50+
namedLogo: 'github',
51+
}
52+
}
53+
4054
static registerLegacyRouteHandler({ camp, cache, githubApiProvider }) {
4155
camp.route(
4256
/^\/github\/watchers\/([^/]+)\/([^/]+)\.(svg|png|gif|jpg|json)$/,

‎services/librariesio/librariesio-dependencies.service.js

+36-4
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,44 @@ module.exports = class LibrariesioDependencies extends LegacyService {
2525
static get examples() {
2626
return [
2727
{
28-
title: 'Libraries.io for releases',
29-
previewUrl: 'release/hex/phoenix/1.0.3',
28+
title: 'Libraries.io dependency status for latest release',
29+
pattern: 'release/:user/:repo',
30+
namedParams: {
31+
user: 'hex',
32+
repo: 'phoenix',
33+
},
34+
staticPreview: {
35+
label: 'dependencies',
36+
message: '1 out of date',
37+
color: 'orange',
38+
},
3039
},
3140
{
32-
title: 'Libraries.io for GitHub',
33-
previewUrl: 'github/phoenixframework/phoenix',
41+
title: 'Libraries.io dependency status for specific release',
42+
pattern: 'release/:user/:repo/:version',
43+
namedParams: {
44+
user: 'hex',
45+
repo: 'phoenix',
46+
version: '1.0.3',
47+
},
48+
staticPreview: {
49+
label: 'dependencies',
50+
message: '3 out of date',
51+
color: 'orange',
52+
},
53+
},
54+
{
55+
title: 'Libraries.io dependency status for GitHub repo',
56+
pattern: 'github/:user/:repo',
57+
namedParams: {
58+
user: 'phoenixframework',
59+
repo: 'phoenix',
60+
},
61+
staticPreview: {
62+
label: 'dependencies',
63+
message: '325 out of date',
64+
color: 'orange',
65+
},
3466
},
3567
]
3668
}

‎services/maven-central/maven-central.service.js

+21-2
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,30 @@ module.exports = class MavenCentral extends LegacyService {
2828
return [
2929
{
3030
title: 'Maven Central',
31-
previewUrl: 'org.apache.maven/apache-maven',
31+
pattern: ':groupId/:artifactId',
32+
namedParams: {
33+
groupId: 'org.apache.maven',
34+
artifactId: 'apache-maven',
35+
},
36+
staticPreview: {
37+
label: 'maven-central',
38+
message: 'v3.6.0',
39+
color: 'blue',
40+
},
3241
},
3342
{
3443
title: 'Maven Central with version prefix filter',
35-
previewUrl: 'org.apache.maven/apache-maven/2',
44+
pattern: ':groupId/:artifactId/:versionPrefix',
45+
namedParams: {
46+
groupId: 'org.apache.maven',
47+
artifactId: 'apache-maven',
48+
versionPrefix: '2',
49+
},
50+
staticPreview: {
51+
label: 'maven-central',
52+
message: 'v2.2.1',
53+
color: 'blue',
54+
},
3655
},
3756
]
3857
}

‎services/maven-metadata/maven-metadata.service.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,24 @@ module.exports = class MavenMetadata extends LegacyService {
2020
static get route() {
2121
return {
2222
base: 'maven-metadata/v',
23-
pattern: '',
23+
pattern: ':protocol(http|https)/:hostAndPath',
2424
}
2525
}
2626

2727
static get examples() {
2828
return [
2929
{
3030
title: 'Maven metadata URL',
31-
previewUrl:
32-
'http/central.maven.org/maven2/com/google/code/gson/gson/maven-metadata.xml',
31+
namedParams: {
32+
protocol: 'http',
33+
hostAndPath:
34+
'central.maven.org/maven2/com/google/code/gson/gson/maven-metadata.xml',
35+
},
36+
staticPreview: {
37+
label: 'maven',
38+
message: 'v2.8.5',
39+
color: 'blue',
40+
},
3341
},
3442
]
3543
}

‎services/packagist/packagist-downloads.service.js

+35-6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const {
77
downloadCount: downloadCountColor,
88
} = require('../../lib/color-formatters')
99

10+
const keywords = ['PHP']
11+
1012
// This legacy service should be rewritten to use e.g. BaseJsonService.
1113
//
1214
// Tips for rewriting:
@@ -29,18 +31,45 @@ module.exports = class PackagistDownloads extends LegacyService {
2931
return [
3032
{
3133
title: 'Packagist',
32-
previewUrl: 'dm/doctrine/orm',
33-
keywords: ['PHP'],
34+
pattern: 'dm/:user/:repo',
35+
namedParams: {
36+
user: 'doctrine',
37+
repo: 'orm',
38+
},
39+
staticPreview: {
40+
label: 'downloads',
41+
message: '1M/month',
42+
color: 'brightgreen',
43+
},
44+
keywords,
3445
},
3546
{
3647
title: 'Packagist',
37-
previewUrl: 'dd/doctrine/orm',
38-
keywords: ['PHP'],
48+
pattern: 'dd/:user/:repo',
49+
namedParams: {
50+
user: 'doctrine',
51+
repo: 'orm',
52+
},
53+
staticPreview: {
54+
label: 'downloads',
55+
message: '49k/day',
56+
color: 'brightgreen',
57+
},
58+
keywords,
3959
},
4060
{
4161
title: 'Packagist',
42-
previewUrl: 'dt/doctrine/orm',
43-
keywords: ['PHP'],
62+
pattern: 'dt/:user/:repo',
63+
namedParams: {
64+
user: 'doctrine',
65+
repo: 'orm',
66+
},
67+
staticPreview: {
68+
label: 'downloads',
69+
message: '45M',
70+
color: 'brightgreen',
71+
},
72+
keywords,
4473
},
4574
]
4675
}

‎services/packagist/packagist-php-version.service.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,29 @@ const log = require('../../core/server/log')
1212
// Do not base new services on this code.
1313
module.exports = class PackagistPhpVersion extends LegacyService {
1414
static get category() {
15-
return 'version'
15+
return 'platform-support'
1616
}
1717

1818
static get route() {
1919
return {
2020
base: 'packagist/php-v',
21-
pattern: '',
21+
pattern: ':user/:repo',
2222
}
2323
}
2424

2525
static get examples() {
2626
return [
2727
{
2828
title: 'PHP from Packagist',
29-
previewUrl: 'symfony/symfony',
29+
namedParams: {
30+
user: 'symfony',
31+
repo: 'symfony',
32+
},
33+
staticPreview: {
34+
label: 'php',
35+
message: '^7.1.3',
36+
color: 'blue',
37+
},
3038
},
3139
]
3240
}

‎services/packagist/packagist-version.service.js

+24-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ const {
1010
isStable: phpStableVersion,
1111
} = require('../../lib/php-version')
1212

13+
const keywords = ['PHP']
14+
1315
// This legacy service should be rewritten to use e.g. BaseJsonService.
1416
//
1517
// Tips for rewriting:
@@ -32,13 +34,31 @@ module.exports = class PackagistVersion extends LegacyService {
3234
return [
3335
{
3436
title: 'Packagist',
35-
previewUrl: 'v/symfony/symfony',
36-
keywords: ['PHP'],
37+
pattern: 'v/:user/:repo',
38+
namedParams: {
39+
user: 'symfony',
40+
repo: 'symfony',
41+
},
42+
staticPreview: {
43+
label: 'packagist',
44+
message: 'v4.2.2',
45+
color: 'blue',
46+
},
47+
keywords,
3748
},
3849
{
3950
title: 'Packagist Pre Release',
40-
previewUrl: 'vpre/symfony/symfony',
41-
keywords: ['PHP'],
51+
pattern: 'vpre/:user/:repo',
52+
namedParams: {
53+
user: 'symfony',
54+
repo: 'symfony',
55+
},
56+
staticPreview: {
57+
label: 'packagist',
58+
message: 'v4.3-dev',
59+
color: 'orange',
60+
},
61+
keywords,
4262
},
4363
]
4464
}

‎services/php-eye/php-eye-php-version.service.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,15 @@ module.exports = class PhpEyePhpVersion extends LegacyService {
3030
return [
3131
{
3232
title: 'PHP version from PHP-Eye',
33-
previewUrl: 'symfony/symfony',
33+
namedParams: {
34+
user: 'symfony',
35+
repo: 'symfony',
36+
},
37+
staticPreview: {
38+
label: 'php tested',
39+
message: '7.1',
40+
color: 'brightgreen',
41+
},
3442
},
3543
]
3644
}

‎services/puppetforge/puppetforge-modules.service.js

+40-8
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,16 @@ class PuppetforgeModuleVersion extends LegacyService {
2727
static get examples() {
2828
return [
2929
{
30-
title: 'Puppet Forge',
31-
previewUrl: 'vStone/percona',
30+
title: 'Puppet Forge version',
31+
namedParams: {
32+
user: 'vStone',
33+
moduleName: 'percona',
34+
},
35+
staticPreview: {
36+
label: 'puppetforge',
37+
message: 'v1.3.3',
38+
color: 'blue',
39+
},
3240
},
3341
]
3442
}
@@ -83,8 +91,16 @@ class PuppetforgeModuleDownloads extends LegacyService {
8391
static get examples() {
8492
return [
8593
{
86-
title: 'Puppet Forge',
87-
previewUrl: 'camptocamp/openldap',
94+
title: 'Puppet Forge downloads',
95+
namedParams: {
96+
user: 'camptocamp',
97+
moduleName: 'openldap',
98+
},
99+
staticPreview: {
100+
label: 'downloads',
101+
message: '720k',
102+
color: 'brightgreen',
103+
},
88104
},
89105
]
90106
}
@@ -107,8 +123,16 @@ class PuppetforgeModuleEndorsement extends LegacyService {
107123
static get examples() {
108124
return [
109125
{
110-
title: 'Puppet Forge',
111-
previewUrl: 'camptocamp/openssl',
126+
title: 'Puppet Forge endorsement',
127+
namedParams: {
128+
user: 'camptocamp',
129+
moduleName: 'openssl',
130+
},
131+
staticPreview: {
132+
label: 'endorsement',
133+
message: 'approved',
134+
color: 'green',
135+
},
112136
},
113137
]
114138
}
@@ -131,8 +155,16 @@ class PuppetforgeModuleFeedback extends LegacyService {
131155
static get examples() {
132156
return [
133157
{
134-
title: 'Puppet Forge',
135-
previewUrl: 'camptocamp/openssl',
158+
title: 'Puppet Forge feedback score',
159+
namedParams: {
160+
user: 'camptocamp',
161+
moduleName: 'openssl',
162+
},
163+
staticPreview: {
164+
label: 'score',
165+
message: '61%',
166+
color: 'yellow',
167+
},
136168
},
137169
]
138170
}

‎services/puppetforge/puppetforge-users.service.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,15 @@ class PuppetforgeUserReleases extends LegacyService {
2323
static get examples() {
2424
return [
2525
{
26-
title: 'Puppet Forge',
27-
previewUrl: 'camptocamp',
26+
title: 'Puppet Forge releases by user',
27+
namedParams: {
28+
user: 'camptocamp',
29+
},
30+
staticPreview: {
31+
label: 'releases',
32+
message: '1k',
33+
color: 'brightgreen',
34+
},
2835
},
2936
]
3037
}
@@ -47,8 +54,15 @@ class PuppetforgeUserModules extends LegacyService {
4754
static get examples() {
4855
return [
4956
{
50-
title: 'Puppet Forge',
51-
previewUrl: 'camptocamp',
57+
title: 'Puppet Forge modules by user',
58+
namedParams: {
59+
user: 'camptocamp',
60+
},
61+
staticPreview: {
62+
label: 'modules',
63+
message: '60',
64+
color: 'brightgreen',
65+
},
5266
},
5367
]
5468
}

‎services/scrutinizer/scrutinizer.service.js

+52-13
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,25 @@ class ScrutinizerBuild extends LegacyService {
1414

1515
static get route() {
1616
return {
17-
base: 'scrutinizer',
18-
pattern: '',
17+
base: 'scrutinizer/build',
18+
pattern: ':vcsType/:user/:repo',
1919
}
2020
}
2121

2222
static get examples() {
2323
return [
2424
{
25-
title: 'Scrutinizer Build',
26-
previewUrl: 'build/g/filp/whoops',
25+
title: 'Scrutinizer build',
26+
namedParams: {
27+
vcsType: 'g',
28+
user: 'filp',
29+
repo: 'whoops',
30+
},
31+
staticPreview: {
32+
label: 'build',
33+
message: 'passing',
34+
color: 'brightgreen',
35+
},
2736
},
2837
]
2938
}
@@ -38,20 +47,41 @@ class ScrutinizerCoverage extends LegacyService {
3847

3948
static get route() {
4049
return {
41-
base: 'scrutinizer',
42-
pattern: '',
50+
base: 'scrutinizer/coverage',
51+
pattern: ':vcsType/:user/:repo/:branch*',
4352
}
4453
}
4554

4655
static get examples() {
4756
return [
4857
{
49-
title: 'Scrutinizer Coverage',
50-
previewUrl: 'coverage/g/filp/whoops',
58+
title: 'Scrutinizer coverage',
59+
pattern: ':vcsType/:user/:repo',
60+
namedParams: {
61+
vcsType: 'g',
62+
user: 'filp',
63+
repo: 'whoops',
64+
},
65+
staticPreview: {
66+
label: 'coverage',
67+
message: '56%',
68+
color: 'yellow',
69+
},
5170
},
5271
{
53-
title: 'Scrutinizer branch',
54-
previewUrl: 'coverage/g/doctrine/doctrine2/master',
72+
title: 'Scrutinizer coverage (branch)',
73+
pattern: ':vcsType/:user/:repo/:branch',
74+
namedParams: {
75+
vcsType: 'g',
76+
user: 'doctrine',
77+
repo: 'orm',
78+
branch: 'master',
79+
},
80+
staticPreview: {
81+
label: 'coverage',
82+
message: '73%',
83+
color: 'yellow',
84+
},
5585
},
5686
]
5787
}
@@ -73,15 +103,24 @@ class Scrutinizer extends LegacyService {
73103
static get route() {
74104
return {
75105
base: 'scrutinizer',
76-
pattern: '',
106+
pattern: ':vcsType/:user/:repo',
77107
}
78108
}
79109

80110
static get examples() {
81111
return [
82112
{
83-
title: 'Scrutinizer',
84-
previewUrl: 'g/filp/whoops',
113+
title: 'Scrutinizer code quality',
114+
namedParams: {
115+
vcsType: 'g',
116+
user: 'filp',
117+
repo: 'whoops',
118+
},
119+
staticPreview: {
120+
label: 'code quality',
121+
message: '8.26',
122+
color: 'green',
123+
},
85124
},
86125
]
87126
}

‎services/sonarqube/sonarqube.service.js

+54-12
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,35 @@ class SonarqubeCoverage extends LegacyService {
2323
static get examples() {
2424
return [
2525
{
26-
title: 'SonarQube Coverage',
27-
previewUrl:
28-
'http/sonar.petalslink.com/org.ow2.petals%3Apetals-se-ase/coverage',
26+
title: 'SonarQube coverage',
27+
pattern: ':scheme(http|https)/:host/:buildType/:metricName',
28+
namedParams: {
29+
scheme: 'http',
30+
host: 'sonar.petalslink.com',
31+
buildType: 'org.ow2.petals:petals-se-ase',
32+
metricName: 'coverage',
33+
},
34+
staticPreview: {
35+
label: 'coverage',
36+
message: '63%',
37+
color: 'yellow',
38+
},
2939
},
3040
{
31-
title: 'SonarQube Coverage (legacy API)',
32-
previewUrl:
33-
'4.2/http/sonar.petalslink.com/org.ow2.petals%3Apetals-se-ase/coverage',
41+
title: 'SonarQube coverage (legacy API)',
42+
pattern: ':apiVersion/:scheme(http|https)/:host/:buildType/:metricName',
43+
namedParams: {
44+
apiVersion: '4.2',
45+
scheme: 'http',
46+
host: 'sonar.petalslink.com',
47+
buildType: 'org.ow2.petals:petals-se-ase',
48+
metricName: 'coverage',
49+
},
50+
staticPreview: {
51+
label: 'coverage',
52+
message: '63%',
53+
color: 'yellow',
54+
},
3455
},
3556
]
3657
}
@@ -59,14 +80,35 @@ class Sonarqube extends LegacyService {
5980
static get examples() {
6081
return [
6182
{
62-
title: 'SonarQube Tech Debt',
63-
previewUrl:
64-
'http/sonar.petalslink.com/org.ow2.petals%3Apetals-se-ase/tech_debt',
83+
title: 'SonarQube tech debt',
84+
pattern: ':scheme(http|https)/:host/:buildType/:metricName',
85+
namedParams: {
86+
scheme: 'http',
87+
host: 'sonar.petalslink.com',
88+
buildType: 'org.ow2.petals:petals-se-ase',
89+
metricName: 'tech_debt',
90+
},
91+
staticPreview: {
92+
label: 'tech debt',
93+
message: '2%',
94+
color: 'brightgreen',
95+
},
6596
},
6697
{
67-
title: 'SonarQube Tech Debt (legacy API)',
68-
previewUrl:
69-
'4.2/http/sonar.petalslink.com/org.ow2.petals%3Apetals-se-ase/tech_debt',
98+
title: 'SonarQube tech debt (legacy API)',
99+
pattern: ':apiVersion/:scheme(http|https)/:host/:buildType/:metricName',
100+
namedParams: {
101+
apiVersion: '4.2',
102+
scheme: 'http',
103+
host: 'sonar.petalslink.com',
104+
buildType: 'org.ow2.petals:petals-se-ase',
105+
metricName: 'tech_debt',
106+
},
107+
staticPreview: {
108+
label: 'tech debt',
109+
message: '2%',
110+
color: 'brightgreen',
111+
},
70112
},
71113
]
72114
}

‎services/twitter/twitter.service.js

+32-4
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,35 @@ class TwitterUrl extends LegacyService {
1919
static get route() {
2020
return {
2121
base: 'twitter/url',
22-
pattern: '',
22+
pattern: ':protocol(https|http)/:hostAndPath+',
2323
}
2424
}
2525

2626
static get examples() {
2727
return [
2828
{
2929
title: 'Twitter URL',
30-
previewUrl: 'http/shields.io',
30+
pattern: ':protocol(https|http)/:hostAndPath',
31+
namedParams: {
32+
protocol: 'http',
33+
hostAndPath: 'shields.io',
34+
},
3135
queryParams: { style: 'social' },
36+
staticPreview: {
37+
label: 'Tweet',
38+
message: '',
39+
style: 'social',
40+
},
3241
},
3342
]
3443
}
3544

45+
static get defaultBadgeData() {
46+
return {
47+
namedLogo: 'twitter',
48+
}
49+
}
50+
3651
static registerLegacyRouteHandler({ camp, cache }) {
3752
camp.route(
3853
/^\/twitter\/url\/([^/]+)\/(.+)\.(svg|png|gif|jpg|json)$/,
@@ -82,12 +97,25 @@ class TwitterFollow extends LegacyService {
8297
return [
8398
{
8499
title: 'Twitter Follow',
85-
previewUrl: 'espadrine',
86-
queryParams: { style: 'social', label: 'Follow' },
100+
namedParams: {
101+
user: 'espadrine',
102+
},
103+
queryParams: { label: 'Follow' },
104+
staticPreview: {
105+
label: 'Follow',
106+
message: '393',
107+
style: 'social',
108+
},
87109
},
88110
]
89111
}
90112

113+
static get defaultBadgeData() {
114+
return {
115+
namedLogo: 'twitter',
116+
}
117+
}
118+
91119
static registerLegacyRouteHandler({ camp, cache }) {
92120
camp.route(
93121
/^\/twitter\/follow\/@?([^/]+)\.(svg|png|gif|jpg|json)$/,

‎services/website/website.service.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,17 @@ module.exports = class Website extends LegacyService {
9595
static get examples() {
9696
return [
9797
{
98-
previewUrl: 'website-up-down-green-red/https/shields.io',
99-
queryParams: { label: 'my-website' },
100-
keywords: ['website'],
98+
title: 'Website',
99+
pattern: 'website-up-down-green-red/:protocol(https|http)/:hostAndPath',
100+
namedParams: {
101+
protocol: 'https',
102+
hostAndPath: 'shields.io',
103+
},
104+
staticPreview: {
105+
label: 'website',
106+
message: 'up',
107+
color: 'green',
108+
},
101109
documentation,
102110
},
103111
]

0 commit comments

Comments
 (0)
Please sign in to comment.