From c0087cae674282bb6ed7c61b3d97a69b76739987 Mon Sep 17 00:00:00 2001 From: Paula Barszcz <paula.anna.barszcz@gmail.com> Date: Thu, 20 Oct 2022 21:08:48 +0200 Subject: [PATCH] Add [GitHubLastCommit] by committer badge (#8537) * add github last commit by committer badge * modify queryParam Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com> --- services/github/github-last-commit.service.js | 34 +++++++++++++++++-- services/github/github-last-commit.tester.js | 4 +++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/services/github/github-last-commit.service.js b/services/github/github-last-commit.service.js index 509f5422f6..e9a1fa588b 100644 --- a/services/github/github-last-commit.service.js +++ b/services/github/github-last-commit.service.js @@ -15,14 +15,28 @@ const schema = Joi.array() author: Joi.object({ date: Joi.string().required(), }).required(), + committer: Joi.object({ + date: Joi.string().required(), + }).required(), }).required(), }).required() ) .required() +const queryParamSchema = Joi.object({ + display_timestamp: Joi.string() + .valid('author', 'committer') + .default('author'), +}).required() + export default class GithubLastCommit extends GithubAuthV3Service { static category = 'activity' - static route = { base: 'github/last-commit', pattern: ':user/:repo/:branch*' } + static route = { + base: 'github/last-commit', + pattern: ':user/:repo/:branch*', + queryParamSchema, + } + static examples = [ { title: 'GitHub last commit', @@ -45,6 +59,17 @@ export default class GithubLastCommit extends GithubAuthV3Service { staticPreview: this.render({ commitDate: '2013-07-31T20:01:41Z' }), ...commonExampleAttrs, }, + { + title: 'GitHub last commit (by committer)', + pattern: ':user/:repo', + namedParams: { + user: 'google', + repo: 'skia', + }, + queryParams: { display_timestamp: 'committer' }, + staticPreview: this.render({ commitDate: '2022-10-15T20:01:41Z' }), + ...commonExampleAttrs, + }, ] static defaultBadgeData = { label: 'last commit' } @@ -65,8 +90,11 @@ export default class GithubLastCommit extends GithubAuthV3Service { }) } - async handle({ user, repo, branch }) { + async handle({ user, repo, branch }, queryParams) { const body = await this.fetch({ user, repo, branch }) - return this.constructor.render({ commitDate: body[0].commit.author.date }) + + return this.constructor.render({ + commitDate: body[0].commit[queryParams.display_timestamp].date, + }) } } diff --git a/services/github/github-last-commit.tester.js b/services/github/github-last-commit.tester.js index 23eed9fb37..f1399dc3d1 100644 --- a/services/github/github-last-commit.tester.js +++ b/services/github/github-last-commit.tester.js @@ -14,6 +14,10 @@ t.create('last commit (on branch)') .get('/badges/badgr.co/shielded.json') .expectBadge({ label: 'last commit', message: 'july 2013' }) +t.create('last commit (by committer)') + .get('/badges/badgr.co/shielded.json?display_timestamp=committer') + .expectBadge({ label: 'last commit', message: 'july 2013' }) + t.create('last commit (repo not found)') .get('/badges/helmets.json') .expectBadge({ label: 'last commit', message: 'repo not found' }) -- GitLab