feat(oas31): add support for OpenAPI 3.1.0 in VersionPragmaFilter (#8495)
Refs #8492
This commit is contained in:
73
src/core/plugins/oas31/components/version-pragma-filter.jsx
Normal file
73
src/core/plugins/oas31/components/version-pragma-filter.jsx
Normal file
@@ -0,0 +1,73 @@
|
||||
import React from "react"
|
||||
import PropTypes from "prop-types"
|
||||
|
||||
const VersionPragmaFilter = ({
|
||||
bypass,
|
||||
isSwagger2,
|
||||
isOAS3,
|
||||
isOAS31,
|
||||
alsoShow,
|
||||
children,
|
||||
}) => {
|
||||
if (bypass) {
|
||||
return <div>{children}</div>
|
||||
}
|
||||
|
||||
if (isSwagger2 && (isOAS3 || isOAS31)) {
|
||||
return (
|
||||
<div className="version-pragma">
|
||||
{alsoShow}
|
||||
<div className="version-pragma__message version-pragma__message--ambiguous">
|
||||
<div>
|
||||
<h3>Unable to render this definition</h3>
|
||||
<p>
|
||||
<code>swagger</code> and <code>openapi</code> fields cannot be
|
||||
present in the same Swagger or OpenAPI definition. Please remove
|
||||
one of the fields.
|
||||
</p>
|
||||
<p>
|
||||
Supported version fields are <code>swagger: "2.0"</code> and
|
||||
those that match <code>openapi: 3.x.y</code> (for example,{" "}
|
||||
<code>openapi: 3.1.0</code>).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
if (!isSwagger2 && !isOAS3 && !isOAS31) {
|
||||
return (
|
||||
<div className="version-pragma">
|
||||
{alsoShow}
|
||||
<div className="version-pragma__message version-pragma__message--missing">
|
||||
<div>
|
||||
<h3>Unable to render this definition</h3>
|
||||
<p>
|
||||
The provided definition does not specify a valid version field.
|
||||
</p>
|
||||
<p>
|
||||
Please indicate a valid Swagger or OpenAPI version field.
|
||||
Supported version fields are <code>swagger: "2.0"</code> and
|
||||
those that match <code>openapi: 3.x.y</code> (for example,{" "}
|
||||
<code>openapi: 3.1.0</code>).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
return <div>{children}</div>
|
||||
}
|
||||
|
||||
VersionPragmaFilter.propTypes = {
|
||||
isSwagger2: PropTypes.bool.isRequired,
|
||||
isOAS3: PropTypes.bool.isRequired,
|
||||
isOAS31: PropTypes.bool.isRequired,
|
||||
bypass: PropTypes.bool,
|
||||
alsoShow: PropTypes.element,
|
||||
children: PropTypes.any,
|
||||
}
|
||||
|
||||
export default VersionPragmaFilter
|
||||
@@ -5,9 +5,11 @@ import Webhooks from "./components/webhooks"
|
||||
import License from "./components/license"
|
||||
import Contact from "./components/contact"
|
||||
import Info from "./components/info"
|
||||
import VersionPragmaFilter from "./components/version-pragma-filter"
|
||||
import LicenseWrapper from "./wrap-components/license"
|
||||
import ContactWrapper from "./wrap-components/contact"
|
||||
import InfoWrapper from "./wrap-components/info"
|
||||
import VersionPragmaFilterWrapper from "./wrap-components/version-pragma-filter"
|
||||
import {
|
||||
license as selectLicense,
|
||||
contact as selectContact,
|
||||
@@ -58,11 +60,13 @@ const OAS31Plugin = ({ fn }) => {
|
||||
OAS31Info: Info,
|
||||
OAS31License: License,
|
||||
OAS31Contact: Contact,
|
||||
OAS31VersionPragmaFilter: VersionPragmaFilter,
|
||||
},
|
||||
wrapComponents: {
|
||||
InfoContainer: InfoWrapper,
|
||||
License: LicenseWrapper,
|
||||
Contact: ContactWrapper,
|
||||
VersionPragmaFilter: VersionPragmaFilterWrapper,
|
||||
},
|
||||
statePlugins: {
|
||||
spec: {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* @prettier
|
||||
*/
|
||||
import React from "react"
|
||||
|
||||
const VersionPragmaFilterWrapper = (Original, system) => (props) => {
|
||||
const isOAS31 = system.specSelectors.isOAS31()
|
||||
|
||||
const OAS31VersionPragmaFilter = system.getComponent(
|
||||
"OAS31VersionPragmaFilter"
|
||||
)
|
||||
|
||||
return <OAS31VersionPragmaFilter isOAS31={isOAS31} {...props} />
|
||||
}
|
||||
|
||||
export default VersionPragmaFilterWrapper
|
||||
Reference in New Issue
Block a user