Skip to content

Commit

Permalink
use single project route param
Browse files Browse the repository at this point in the history
  • Loading branch information
calebcartwright committed Oct 16, 2021
1 parent 84a52af commit bfe7c1c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 15 deletions.
37 changes: 22 additions & 15 deletions services/gitlab/gitlab-release.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,36 +18,43 @@ const queryParamSchema = Joi.object({
display_name: Joi.string().valid('tag', 'release').default('tag'),
}).required()

const namedParams = {
user: 'shields-ops-group',
repo: 'repo-test',
const documentation = `
<p>
You may use your GitLab Project Id (e.g. 25813592) or your Project Path (e.g. megabyte-labs/dockerfile/ci-pipeline/ansible-lint)
</p>
`
const commonProps = {
namedParams: {
project: 'shields-ops-group/tag-test',
},
documentation,
}

export default class GitLabRelease extends GitLabBase {
static category = 'version'

static route = {
base: 'gitlab/v/release',
pattern: ':user/:repo',
pattern: ':project+',
queryParamSchema,
}

static examples = [
{
title: 'GitLab Release (latest by date)',
namedParams,
...commonProps,
queryParams: { sort: 'date' },
staticPreview: renderVersionBadge({ version: 'v2.0.0' }),
},
{
title: 'GitLab Release (latest by SemVer)',
namedParams,
...commonProps,
queryParams: { sort: 'semver' },
staticPreview: renderVersionBadge({ version: 'v4.0.0' }),
},
{
title: 'GitLab Release (latest by SemVer pre-release)',
namedParams,
...commonProps,
queryParams: {
sort: 'semver',
include_prereleases: null,
Expand All @@ -57,9 +64,9 @@ export default class GitLabRelease extends GitLabBase {
{
title: 'GitLab Release (custom instance)',
namedParams: {
user: 'GNOME',
repo: 'librsvg',
project: 'GNOME/librsvg',
},
documentation,
queryParams: {
sort: 'semver',
include_prereleases: null,
Expand All @@ -70,9 +77,9 @@ export default class GitLabRelease extends GitLabBase {
{
title: 'GitLab Release (by release name)',
namedParams: {
user: 'gitlab-org',
repo: 'gitlab',
project: 'gitlab-org/gitlab',
},
documentation,
queryParams: {
sort: 'semver',
include_prereleases: null,
Expand All @@ -85,11 +92,11 @@ export default class GitLabRelease extends GitLabBase {

static defaultBadgeData = { label: 'release' }

async fetch({ user, repo, baseUrl, isSemver }) {
async fetch({ project, baseUrl, isSemver }) {
// https://docs.gitlab.com/ee/api/releases/
return this.fetchPaginatedArrayData({
schema,
url: `${baseUrl}/api/v4/projects/${user}%2F${repo}/releases`,
url: `${baseUrl}/api/v4/projects/${encodeURIComponent(project)}/releases`,
errorMessages: {
404: 'project not found',
},
Expand All @@ -115,7 +122,7 @@ export default class GitLabRelease extends GitLabBase {
}

async handle(
{ user, repo },
{ project },
{
gitlab_url: baseUrl = 'https://gitlab.com',
include_prereleases: pre,
Expand All @@ -124,7 +131,7 @@ export default class GitLabRelease extends GitLabBase {
}
) {
const isSemver = sort === 'semver'
const releases = await this.fetch({ user, repo, baseUrl, isSemver })
const releases = await this.fetch({ project, baseUrl, isSemver })
const version = this.constructor.transform({
releases,
isSemver,
Expand Down
4 changes: 4 additions & 0 deletions services/gitlab/gitlab-release.tester.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ t.create('Release (latest by date)')
.get('/shields-ops-group/tag-test.json')
.expectBadge({ label: 'release', message: 'v2.0.0', color: 'blue' })

t.create('Release (project id latest by date)')
.get('/29538796.json')
.expectBadge({ label: 'release', message: 'v2.0.0', color: 'blue' })

t.create('Release (latest by semver)')
.get('/shields-ops-group/tag-test.json?sort=semver')
.expectBadge({ label: 'release', message: 'v4.0.0', color: 'blue' })
Expand Down

0 comments on commit bfe7c1c

Please sign in to comment.