Skip to content
Snippets Groups Projects
Unverified Commit cab02866 authored by chris48s's avatar chris48s Committed by GitHub
Browse files

migrate examples to openApi part 16; affects [gitlabrelease swagger] (#9565)

* convert gitlab release from examples to openApi

* convert swagger from examples to openApi

* DRY up enums (1)

* DRY up enums (2)
parent 646f7f21
No related branches found
No related tags found
No related merge requests found
import Joi from 'joi' import Joi from 'joi'
import { optionalUrl } from '../validators.js' import { optionalUrl } from '../validators.js'
import { latest, renderVersionBadge } from '../version.js' import { latest, renderVersionBadge } from '../version.js'
import { NotFound } from '../index.js' import { NotFound, pathParam, queryParam } from '../index.js'
import { documentation, httpErrorsFor } from './gitlab-helper.js' import { documentation, httpErrorsFor } from './gitlab-helper.js'
import GitLabBase from './gitlab-base.js' import GitLabBase from './gitlab-base.js'
...@@ -12,23 +12,24 @@ const schema = Joi.array().items( ...@@ -12,23 +12,24 @@ const schema = Joi.array().items(
}), }),
) )
const sortEnum = ['date', 'semver']
const displayNameEnum = ['tag', 'release']
const dateOrderByEnum = ['created_at', 'released_at']
const queryParamSchema = Joi.object({ const queryParamSchema = Joi.object({
gitlab_url: optionalUrl, gitlab_url: optionalUrl,
include_prereleases: Joi.equal(''), include_prereleases: Joi.equal(''),
sort: Joi.string().valid('date', 'semver').default('date'), sort: Joi.string()
display_name: Joi.string().valid('tag', 'release').default('tag'), .valid(...sortEnum)
.default('date'),
display_name: Joi.string()
.valid(...displayNameEnum)
.default('tag'),
date_order_by: Joi.string() date_order_by: Joi.string()
.valid('created_at', 'released_at') .valid(...dateOrderByEnum)
.default('created_at'), .default('created_at'),
}).required() }).required()
const commonProps = {
namedParams: {
project: 'shields-ops-group/tag-test',
},
documentation,
}
export default class GitLabRelease extends GitLabBase { export default class GitLabRelease extends GitLabBase {
static category = 'version' static category = 'version'
...@@ -38,58 +39,44 @@ export default class GitLabRelease extends GitLabBase { ...@@ -38,58 +39,44 @@ export default class GitLabRelease extends GitLabBase {
queryParamSchema, queryParamSchema,
} }
static examples = [ static openApi = {
{ '/gitlab/v/release/{project}': {
title: 'GitLab Release (latest by date)', get: {
...commonProps, summary: 'GitLab Release',
queryParams: { sort: 'date', date_order_by: 'created_at' }, description: documentation,
staticPreview: renderVersionBadge({ version: 'v2.0.0' }), parameters: [
}, pathParam({
{ name: 'project',
title: 'GitLab Release (latest by SemVer)', example: 'gitlab-org/gitlab',
...commonProps, }),
queryParams: { sort: 'semver' }, queryParam({
staticPreview: renderVersionBadge({ version: 'v4.0.0' }), name: 'gitlab_url',
}, example: 'https://gitlab.com',
{ }),
title: 'GitLab Release (latest by SemVer pre-release)', queryParam({
...commonProps, name: 'include_prereleases',
queryParams: { schema: { type: 'boolean' },
sort: 'semver', example: null,
include_prereleases: null, }),
queryParam({
name: 'sort',
schema: { type: 'string', enum: sortEnum },
example: 'semver',
}),
queryParam({
name: 'display_name',
schema: { type: 'string', enum: displayNameEnum },
example: 'release',
}),
queryParam({
name: 'date_order_by',
schema: { type: 'string', enum: dateOrderByEnum },
example: 'created_at',
}),
],
}, },
staticPreview: renderVersionBadge({ version: 'v5.0.0-beta.1' }),
}, },
{ }
title: 'GitLab Release (self-managed)',
namedParams: {
project: 'GNOME/librsvg',
},
documentation,
queryParams: {
sort: 'semver',
include_prereleases: null,
gitlab_url: 'https://gitlab.gnome.org',
date_order_by: 'created_at',
},
staticPreview: renderVersionBadge({ version: 'v2.51.4' }),
},
{
title: 'GitLab Release (by release name)',
namedParams: {
project: 'gitlab-org/gitlab',
},
documentation,
queryParams: {
sort: 'semver',
include_prereleases: null,
gitlab_url: 'https://gitlab.com',
display_name: 'release',
date_order_by: 'created_at',
},
staticPreview: renderVersionBadge({ version: 'GitLab 14.2' }),
},
]
static defaultBadgeData = { label: 'release' } static defaultBadgeData = { label: 'release' }
......
import Joi from 'joi' import Joi from 'joi'
import { optionalUrl } from '../validators.js' import { optionalUrl } from '../validators.js'
import { BaseJsonService, NotFound } from '../index.js' import { BaseJsonService, NotFound, queryParams } from '../index.js'
const schema = Joi.object() const schema = Joi.object()
.keys({ .keys({
...@@ -26,17 +26,19 @@ export default class SwaggerValidatorService extends BaseJsonService { ...@@ -26,17 +26,19 @@ export default class SwaggerValidatorService extends BaseJsonService {
queryParamSchema, queryParamSchema,
} }
static examples = [ static openApi = {
{ '/swagger/valid/3.0': {
title: 'Swagger Validator', get: {
staticPreview: this.render({ status: 'valid' }), summary: 'Swagger Validator',
namedParams: {}, parameters: queryParams({
queryParams: { name: 'specUrl',
specUrl: required: true,
'https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v2.0/json/petstore-expanded.json', example:
'https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v2.0/json/petstore-expanded.json',
}),
}, },
}, },
] }
static defaultBadgeData = { static defaultBadgeData = {
label: 'swagger', label: 'swagger',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment