diff --git a/services/github/github-last-commit.service.js b/services/github/github-last-commit.service.js index 509f5422f6ebb614c29a7e7ad6dc4f4908b23ed8..e9a1fa588bd0407ad1b416903ec15c29fa6120b7 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 23eed9fb37bb6c9975021b6edcec6f9e6199bc3e..f1399dc3d103420ee3d2a6167d088e55c289d4bd 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' })