From 80f95f6556a177f511626c1f625377f88e034487 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Fri, 11 Mar 2022 10:00:32 -0800 Subject: [PATCH 1/6] add a pub publisher badge --- services/pub/pub-publisher.service.js | 49 +++++++++++++++++++++++++++ services/pub/pub-publisher.tester.js | 26 ++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 services/pub/pub-publisher.service.js create mode 100644 services/pub/pub-publisher.tester.js diff --git a/services/pub/pub-publisher.service.js b/services/pub/pub-publisher.service.js new file mode 100644 index 0000000000000..06a27cff0d3b5 --- /dev/null +++ b/services/pub/pub-publisher.service.js @@ -0,0 +1,49 @@ +import Joi from 'joi' +import { BaseJsonService } from '../index.js' + +const schema = Joi.object({ + publisherId: Joi.string().allow(null).required(), +}).required() + +class PubPublisher extends BaseJsonService { + static category = 'other' + + static route = { + base: 'pub/publisher', + pattern: ':packageName', + } + + static examples = [ + { + title: 'Pub Publisher', + namedParams: { packageName: 'example' }, + staticPreview: { + label: 'publisher', + message: 'my.publisher.io', + color: 'blue', + }, + keywords: ['dart', 'dartlang'], + }, + ] + + static defaultBadgeData = { label: 'publisher' } + + async fetch({ packageName }) { + return this._requestJson({ + schema, + url: `https://pub.dev/api/packages/${packageName}/publisher`, + }) + } + + async handle({ packageName }) { + const data = await this.fetch({ packageName }) + const publisher = data.publisherId + return { + label: 'publisher', + message: publisher == null ? 'unverified' : publisher, + color: publisher == null ? 'red' : 'blue', + } + } +} + +export { PubPublisher } diff --git a/services/pub/pub-publisher.tester.js b/services/pub/pub-publisher.tester.js new file mode 100644 index 0000000000000..5c40b38cbe01d --- /dev/null +++ b/services/pub/pub-publisher.tester.js @@ -0,0 +1,26 @@ +import { ServiceTester } from '../tester.js' +export const t = new ServiceTester({ + id: 'PubPublisher', + title: 'Pub Publisher', + pathPrefix: '/pub', +}) + +t.create('package publisher').get('/publisher/path.json').expectBadge({ + label: 'publisher', + message: 'dart.dev', +}) + +t.create('package not verified publisher') + .get('/publisher/utf.json') + .expectBadge({ + label: 'publisher', + message: 'unverified', + color: 'red', + }) + +t.create('package not found') + .get('/publisher/does-not-exist.json') + .expectBadge({ + label: 'publisher', + message: 'not found', + }) From 056a241d479c16b2a48e2e9b797e09de587db235 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 15 Mar 2022 15:00:16 -0700 Subject: [PATCH 2/6] use a real publisher name in the badge example --- services/pub/pub-publisher.service.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/pub/pub-publisher.service.js b/services/pub/pub-publisher.service.js index 06a27cff0d3b5..600e7459287e2 100644 --- a/services/pub/pub-publisher.service.js +++ b/services/pub/pub-publisher.service.js @@ -16,10 +16,10 @@ class PubPublisher extends BaseJsonService { static examples = [ { title: 'Pub Publisher', - namedParams: { packageName: 'example' }, + namedParams: { packageName: 'dart.dev' }, staticPreview: { label: 'publisher', - message: 'my.publisher.io', + message: 'dart.dev', color: 'blue', }, keywords: ['dart', 'dartlang'], From 63942e12dc589966b19d131d7cd87c566bf862a1 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Wed, 16 Mar 2022 12:45:12 -0700 Subject: [PATCH 3/6] update based on review comments --- services/pub/pub-publisher.service.js | 18 ++++++++++-------- services/pub/pub-publisher.tester.js | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/services/pub/pub-publisher.service.js b/services/pub/pub-publisher.service.js index 600e7459287e2..803855c7b3053 100644 --- a/services/pub/pub-publisher.service.js +++ b/services/pub/pub-publisher.service.js @@ -5,7 +5,7 @@ const schema = Joi.object({ publisherId: Joi.string().allow(null).required(), }).required() -class PubPublisher extends BaseJsonService { +export class PubPublisher extends BaseJsonService { static category = 'other' static route = { @@ -28,6 +28,14 @@ class PubPublisher extends BaseJsonService { static defaultBadgeData = { label: 'publisher' } + static render({ publisher }) { + return { + label: 'publisher', + message: publisher == null ? 'unverified' : publisher, + color: publisher == null ? 'lightgrey' : 'blue', + } + } + async fetch({ packageName }) { return this._requestJson({ schema, @@ -38,12 +46,6 @@ class PubPublisher extends BaseJsonService { async handle({ packageName }) { const data = await this.fetch({ packageName }) const publisher = data.publisherId - return { - label: 'publisher', - message: publisher == null ? 'unverified' : publisher, - color: publisher == null ? 'red' : 'blue', - } + return this.constructor.render({ publisher }) } } - -export { PubPublisher } diff --git a/services/pub/pub-publisher.tester.js b/services/pub/pub-publisher.tester.js index 5c40b38cbe01d..a5ccd4d6cba9d 100644 --- a/services/pub/pub-publisher.tester.js +++ b/services/pub/pub-publisher.tester.js @@ -15,7 +15,7 @@ t.create('package not verified publisher') .expectBadge({ label: 'publisher', message: 'unverified', - color: 'red', + color: 'lightgrey', }) t.create('package not found') From 87bfecd54a19cbbaddd262600f9d2cd6d7d318fd Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Thu, 17 Mar 2022 12:40:55 -0700 Subject: [PATCH 4/6] Apply suggestions from code review Co-authored-by: Caleb Cartwright --- services/pub/pub-publisher.tester.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/services/pub/pub-publisher.tester.js b/services/pub/pub-publisher.tester.js index a5ccd4d6cba9d..751cae62e6e57 100644 --- a/services/pub/pub-publisher.tester.js +++ b/services/pub/pub-publisher.tester.js @@ -1,17 +1,13 @@ -import { ServiceTester } from '../tester.js' -export const t = new ServiceTester({ - id: 'PubPublisher', - title: 'Pub Publisher', - pathPrefix: '/pub', -}) +import { createServiceTester } from '../tester.js' +export const t = await createServiceTester() -t.create('package publisher').get('/publisher/path.json').expectBadge({ +t.create('package publisher').get('/path.json').expectBadge({ label: 'publisher', message: 'dart.dev', }) t.create('package not verified publisher') - .get('/publisher/utf.json') + .get('/utf.json') .expectBadge({ label: 'publisher', message: 'unverified', @@ -19,7 +15,7 @@ t.create('package not verified publisher') }) t.create('package not found') - .get('/publisher/does-not-exist.json') + .get('/does-not-exist.json') .expectBadge({ label: 'publisher', message: 'not found', From e75b671ef073afa2b7398c3b2b215f9bc04925f4 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Thu, 17 Mar 2022 12:50:36 -0700 Subject: [PATCH 5/6] run js prettier --- services/pub/pub-publisher.tester.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/services/pub/pub-publisher.tester.js b/services/pub/pub-publisher.tester.js index 751cae62e6e57..bb01ab1dbda19 100644 --- a/services/pub/pub-publisher.tester.js +++ b/services/pub/pub-publisher.tester.js @@ -6,17 +6,13 @@ t.create('package publisher').get('/path.json').expectBadge({ message: 'dart.dev', }) -t.create('package not verified publisher') - .get('/utf.json') - .expectBadge({ - label: 'publisher', - message: 'unverified', - color: 'lightgrey', - }) +t.create('package not verified publisher').get('/utf.json').expectBadge({ + label: 'publisher', + message: 'unverified', + color: 'lightgrey', +}) -t.create('package not found') - .get('/does-not-exist.json') - .expectBadge({ - label: 'publisher', - message: 'not found', - }) +t.create('package not found').get('/does-not-exist.json').expectBadge({ + label: 'publisher', + message: 'not found', +}) From 9f9135869ddf79763754c6fe050492894f91b7a4 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Fri, 18 Mar 2022 15:23:54 -0700 Subject: [PATCH 6/6] use the render() method in the example --- services/pub/pub-publisher.service.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/services/pub/pub-publisher.service.js b/services/pub/pub-publisher.service.js index 803855c7b3053..ec9d77c8d3e2d 100644 --- a/services/pub/pub-publisher.service.js +++ b/services/pub/pub-publisher.service.js @@ -16,12 +16,8 @@ export class PubPublisher extends BaseJsonService { static examples = [ { title: 'Pub Publisher', - namedParams: { packageName: 'dart.dev' }, - staticPreview: { - label: 'publisher', - message: 'dart.dev', - color: 'blue', - }, + namedParams: { packageName: 'path' }, + staticPreview: this.render({ publisher: 'dart.dev' }), keywords: ['dart', 'dartlang'], }, ]