OAS3 Accept header control: State-side
This commit is contained in:
@@ -117,7 +117,8 @@ export default class Operation extends PureComponent {
|
|||||||
specSelectors,
|
specSelectors,
|
||||||
authActions,
|
authActions,
|
||||||
authSelectors,
|
authSelectors,
|
||||||
getConfigs
|
getConfigs,
|
||||||
|
oas3Actions
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
let summary = operation.get("summary")
|
let summary = operation.get("summary")
|
||||||
@@ -265,6 +266,7 @@ export default class Operation extends PureComponent {
|
|||||||
getComponent={ getComponent }
|
getComponent={ getComponent }
|
||||||
getConfigs={ getConfigs }
|
getConfigs={ getConfigs }
|
||||||
specSelectors={ specSelectors }
|
specSelectors={ specSelectors }
|
||||||
|
oas3Actions={oas3Actions}
|
||||||
specActions={ specActions }
|
specActions={ specActions }
|
||||||
produces={ produces }
|
produces={ produces }
|
||||||
producesValue={ operation.get("produces_value") }
|
producesValue={ operation.get("produces_value") }
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export default class Operations extends React.Component {
|
|||||||
static propTypes = {
|
static propTypes = {
|
||||||
specSelectors: PropTypes.object.isRequired,
|
specSelectors: PropTypes.object.isRequired,
|
||||||
specActions: PropTypes.object.isRequired,
|
specActions: PropTypes.object.isRequired,
|
||||||
|
oas3Actions: PropTypes.object.isRequired,
|
||||||
getComponent: PropTypes.func.isRequired,
|
getComponent: PropTypes.func.isRequired,
|
||||||
layoutSelectors: PropTypes.object.isRequired,
|
layoutSelectors: PropTypes.object.isRequired,
|
||||||
layoutActions: PropTypes.object.isRequired,
|
layoutActions: PropTypes.object.isRequired,
|
||||||
@@ -21,6 +22,7 @@ export default class Operations extends React.Component {
|
|||||||
let {
|
let {
|
||||||
specSelectors,
|
specSelectors,
|
||||||
specActions,
|
specActions,
|
||||||
|
oas3Actions,
|
||||||
getComponent,
|
getComponent,
|
||||||
layoutSelectors,
|
layoutSelectors,
|
||||||
layoutActions,
|
layoutActions,
|
||||||
@@ -147,6 +149,8 @@ export default class Operations extends React.Component {
|
|||||||
specActions={ specActions }
|
specActions={ specActions }
|
||||||
specSelectors={ specSelectors }
|
specSelectors={ specSelectors }
|
||||||
|
|
||||||
|
oas3Actions={oas3Actions}
|
||||||
|
|
||||||
layoutActions={ layoutActions }
|
layoutActions={ layoutActions }
|
||||||
layoutSelectors={ layoutSelectors }
|
layoutSelectors={ layoutSelectors }
|
||||||
|
|
||||||
|
|||||||
@@ -48,13 +48,24 @@ export default class Response extends React.Component {
|
|||||||
specSelectors: PropTypes.object.isRequired,
|
specSelectors: PropTypes.object.isRequired,
|
||||||
fn: PropTypes.object.isRequired,
|
fn: PropTypes.object.isRequired,
|
||||||
contentType: PropTypes.string,
|
contentType: PropTypes.string,
|
||||||
controlsAcceptHeader: PropTypes.bool
|
controlsAcceptHeader: PropTypes.bool,
|
||||||
|
onContentTypeChange: PropTypes.func
|
||||||
}
|
}
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
response: fromJS({}),
|
response: fromJS({}),
|
||||||
|
onContentTypeChange: () => {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_onContentTypeChange = (value) => {
|
||||||
|
const { onContentTypeChange, controlsAcceptHeader } = this.props
|
||||||
|
this.setState({ responseContentType: value })
|
||||||
|
onContentTypeChange({
|
||||||
|
value: value,
|
||||||
|
controlsAcceptHeader
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let {
|
let {
|
||||||
code,
|
code,
|
||||||
@@ -116,7 +127,7 @@ export default class Response extends React.Component {
|
|||||||
<ContentType
|
<ContentType
|
||||||
value={this.state.responseContentType}
|
value={this.state.responseContentType}
|
||||||
contentTypes={ response.get("content") ? response.get("content").keySeq() : Seq() }
|
contentTypes={ response.get("content") ? response.get("content").keySeq() : Seq() }
|
||||||
onChange={(val) => this.setState({ responseContentType: val })}
|
onChange={this._onContentTypeChange}
|
||||||
/>
|
/>
|
||||||
{ controlsAcceptHeader ? <small>Controls <code>Accept</code> header.</small> : null }
|
{ controlsAcceptHeader ? <small>Controls <code>Accept</code> header.</small> : null }
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -29,6 +29,16 @@ export default class Responses extends React.Component {
|
|||||||
|
|
||||||
onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue(this.props.pathMethod, val)
|
onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue(this.props.pathMethod, val)
|
||||||
|
|
||||||
|
onResponseContentTypeChange = ({ controlsAcceptHeader, value }) => {
|
||||||
|
const { oas3Actions, pathMethod } = this.props
|
||||||
|
if(controlsAcceptHeader) {
|
||||||
|
oas3Actions.setResponseContentType({
|
||||||
|
value,
|
||||||
|
pathMethod
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let {
|
let {
|
||||||
responses,
|
responses,
|
||||||
@@ -93,7 +103,6 @@ export default class Responses extends React.Component {
|
|||||||
<tbody>
|
<tbody>
|
||||||
{
|
{
|
||||||
responses.entrySeq().map( ([code, response]) => {
|
responses.entrySeq().map( ([code, response]) => {
|
||||||
|
|
||||||
let className = tryItOutResponse && tryItOutResponse.get("status") == code ? "response_current" : ""
|
let className = tryItOutResponse && tryItOutResponse.get("status") == code ? "response_current" : ""
|
||||||
return (
|
return (
|
||||||
<Response key={ code }
|
<Response key={ code }
|
||||||
@@ -104,6 +113,7 @@ export default class Responses extends React.Component {
|
|||||||
response={ response }
|
response={ response }
|
||||||
specSelectors={ specSelectors }
|
specSelectors={ specSelectors }
|
||||||
controlsAcceptHeader={response === acceptControllingResponse}
|
controlsAcceptHeader={response === acceptControllingResponse}
|
||||||
|
onContentTypeChange={this.onResponseContentTypeChange}
|
||||||
contentType={ producesValue }
|
contentType={ producesValue }
|
||||||
getComponent={ getComponent }/>
|
getComponent={ getComponent }/>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
export const UPDATE_SELECTED_SERVER = "oas3_set_servers"
|
export const UPDATE_SELECTED_SERVER = "oas3_set_servers"
|
||||||
export const UPDATE_REQUEST_BODY_VALUE = "oas3_set_request_body_value"
|
export const UPDATE_REQUEST_BODY_VALUE = "oas3_set_request_body_value"
|
||||||
export const UPDATE_REQUEST_CONTENT_TYPE = "oas3_set_request_content_type"
|
export const UPDATE_REQUEST_CONTENT_TYPE = "oas3_set_request_content_type"
|
||||||
|
export const UPDATE_RESPONSE_CONTENT_TYPE = "oas3_set_response_content_type"
|
||||||
export const UPDATE_SERVER_VARIABLE_VALUE = "oas3_set_server_variable_value"
|
export const UPDATE_SERVER_VARIABLE_VALUE = "oas3_set_server_variable_value"
|
||||||
|
|
||||||
export function setSelectedServer (selectedServerUrl) {
|
export function setSelectedServer (selectedServerUrl) {
|
||||||
@@ -27,6 +28,13 @@ export function setRequestContentType ({ value, pathMethod }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setResponseContentType ({ value, pathMethod }) {
|
||||||
|
return {
|
||||||
|
type: UPDATE_RESPONSE_CONTENT_TYPE,
|
||||||
|
payload: { value, pathMethod }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function setServerVariableValue ({ server, key, val }) {
|
export function setServerVariableValue ({ server, key, val }) {
|
||||||
return {
|
return {
|
||||||
type: UPDATE_SERVER_VARIABLE_VALUE,
|
type: UPDATE_SERVER_VARIABLE_VALUE,
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ import {
|
|||||||
UPDATE_SELECTED_SERVER,
|
UPDATE_SELECTED_SERVER,
|
||||||
UPDATE_REQUEST_BODY_VALUE,
|
UPDATE_REQUEST_BODY_VALUE,
|
||||||
UPDATE_REQUEST_CONTENT_TYPE,
|
UPDATE_REQUEST_CONTENT_TYPE,
|
||||||
UPDATE_SERVER_VARIABLE_VALUE
|
UPDATE_SERVER_VARIABLE_VALUE,
|
||||||
|
UPDATE_RESPONSE_CONTENT_TYPE
|
||||||
} from "./actions"
|
} from "./actions"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -17,6 +18,10 @@ export default {
|
|||||||
let [path, method] = pathMethod
|
let [path, method] = pathMethod
|
||||||
return state.setIn( [ "requestData", path, method, "requestContentType" ], value)
|
return state.setIn( [ "requestData", path, method, "requestContentType" ], value)
|
||||||
},
|
},
|
||||||
|
[UPDATE_RESPONSE_CONTENT_TYPE]: (state, { payload: { value, pathMethod } } ) =>{
|
||||||
|
let [path, method] = pathMethod
|
||||||
|
return state.setIn( [ "requestData", path, method, "responseContentType" ], value)
|
||||||
|
},
|
||||||
[UPDATE_SERVER_VARIABLE_VALUE]: (state, { payload: { server, key, val } } ) =>{
|
[UPDATE_SERVER_VARIABLE_VALUE]: (state, { payload: { server, key, val } } ) =>{
|
||||||
return state.setIn( [ "serverVariableValues", server, key ], val)
|
return state.setIn( [ "serverVariableValues", server, key ], val)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -30,6 +30,11 @@ export const requestContentType = onlyOAS3((state, path, method) => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
export const responseContentType = onlyOAS3((state, path, method) => {
|
||||||
|
return state.getIn(["requestData", path, method, "responseContentType"]) || null
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
export const serverVariableValue = onlyOAS3((state, server, key) => {
|
export const serverVariableValue = onlyOAS3((state, server, key) => {
|
||||||
return state.getIn(["serverVariableValues", server, key]) || null
|
return state.getIn(["serverVariableValues", server, key]) || null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -218,6 +218,7 @@ export const executeRequest = (req) =>
|
|||||||
req.server = oas3Selectors.selectedServer()
|
req.server = oas3Selectors.selectedServer()
|
||||||
req.serverVariables = oas3Selectors.serverVariables(req.server).toJS()
|
req.serverVariables = oas3Selectors.serverVariables(req.server).toJS()
|
||||||
req.requestContentType = oas3Selectors.requestContentType(pathName, method)
|
req.requestContentType = oas3Selectors.requestContentType(pathName, method)
|
||||||
|
req.responseContentType = oas3Selectors.responseContentType(pathName, method) || "*/*"
|
||||||
const requestBody = oas3Selectors.requestBodyValue(pathName, method)
|
const requestBody = oas3Selectors.requestBodyValue(pathName, method)
|
||||||
|
|
||||||
if(isJSONObject(requestBody)) {
|
if(isJSONObject(requestBody)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user