Render request bodies correctly (minus Example Value + editable functionality)
This commit is contained in:
@@ -2,28 +2,25 @@ import React from "react"
|
|||||||
import { OrderedMap } from "immutable"
|
import { OrderedMap } from "immutable"
|
||||||
|
|
||||||
|
|
||||||
export default ({ requestBody, getComponent, specSelectors }) => {
|
export default ({ requestBody, getComponent, specSelectors, contentType }) => {
|
||||||
const Markdown = getComponent("Markdown")
|
const Markdown = getComponent("Markdown")
|
||||||
const Model = getComponent("model")
|
const ModelExample = getComponent("modelExample")
|
||||||
|
|
||||||
const requestBodyDescription = (requestBody && requestBody.get("description")) || null
|
const requestBodyDescription = (requestBody && requestBody.get("description")) || null
|
||||||
const requestBodyContent = (requestBody && requestBody.get("content")) || new OrderedMap()
|
const requestBodyContent = (requestBody && requestBody.get("content")) || new OrderedMap()
|
||||||
|
contentType = contentType || requestBodyContent.keySeq().first()
|
||||||
|
|
||||||
|
const mediaTypeValue = requestBodyContent.get(contentType)
|
||||||
|
|
||||||
return <div>
|
return <div>
|
||||||
{ requestBodyDescription &&
|
{ requestBodyDescription &&
|
||||||
<p>{requestBodyDescription}</p>
|
<Markdown source={requestBodyDescription} />
|
||||||
}
|
}
|
||||||
{ !requestBodyContent.count() ? <p>No content</p> :
|
<ModelExample
|
||||||
requestBodyContent.map((mediaTypeValue, key) => (
|
|
||||||
<div>
|
|
||||||
<h4>{key}</h4>
|
|
||||||
<Model
|
|
||||||
getComponent={ getComponent }
|
getComponent={ getComponent }
|
||||||
specSelectors={ specSelectors }
|
specSelectors={ specSelectors }
|
||||||
expandDepth={1}
|
expandDepth={1}
|
||||||
schema={mediaTypeValue.get("schema")} />
|
schema={mediaTypeValue.get("schema")}
|
||||||
</div>
|
example={<i>Not yet implemented</i>}/>
|
||||||
)).toArray()
|
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ class Parameters extends Component {
|
|||||||
super(props)
|
super(props)
|
||||||
this.state = {
|
this.state = {
|
||||||
callbackVisible: false,
|
callbackVisible: false,
|
||||||
parametersVisible: true
|
parametersVisible: true,
|
||||||
|
requestBodyContentType: ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,10 +95,12 @@ class Parameters extends Component {
|
|||||||
|
|
||||||
const ParameterRow = getComponent("parameterRow")
|
const ParameterRow = getComponent("parameterRow")
|
||||||
const TryItOutButton = getComponent("TryItOutButton")
|
const TryItOutButton = getComponent("TryItOutButton")
|
||||||
|
const ContentType = getComponent("contentType")
|
||||||
const Callbacks = getComponent("Callbacks", true)
|
const Callbacks = getComponent("Callbacks", true)
|
||||||
const RequestBody = getComponent("RequestBody", true)
|
const RequestBody = getComponent("RequestBody", true)
|
||||||
|
|
||||||
const isExecute = tryItOutEnabled && allowTryItOut
|
const isExecute = tryItOutEnabled && allowTryItOut
|
||||||
|
const { isOAS3 } = specSelectors
|
||||||
|
|
||||||
const requestBody = operation.get("requestBody")
|
const requestBody = operation.get("requestBody")
|
||||||
return (
|
return (
|
||||||
@@ -153,13 +156,20 @@ class Parameters extends Component {
|
|||||||
<Callbacks callbacks={Map(operation.get("callbacks"))} />
|
<Callbacks callbacks={Map(operation.get("callbacks"))} />
|
||||||
</div> : "" }
|
</div> : "" }
|
||||||
{
|
{
|
||||||
requestBody && this.state.parametersVisible &&
|
isOAS3() && requestBody && this.state.parametersVisible &&
|
||||||
<div className="opblock-section">
|
<div className="opblock-section">
|
||||||
<div className="opblock-section-header">
|
<div className="opblock-section-header">
|
||||||
<h4 className="opblock-title">Request body</h4>
|
<h4 className="opblock-title">Request body</h4>
|
||||||
|
<ContentType
|
||||||
|
value={this.state.requestBodyContentType}
|
||||||
|
contentTypes={ requestBody.get("content").keySeq() }
|
||||||
|
onChange={(val) => this.setState({ requestBodyContentType: val })}
|
||||||
|
className="body-param-content-type" />
|
||||||
</div>
|
</div>
|
||||||
<div className="opblock-description-wrapper">
|
<div className="opblock-description-wrapper">
|
||||||
<RequestBody requestBody={requestBody} />
|
<RequestBody
|
||||||
|
requestBody={requestBody}
|
||||||
|
contentType={this.state.requestBodyContentType}/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user