import React from "react" import PropTypes from "prop-types" import ImPropTypes from "react-immutable-proptypes" import { Iterable } from "immutable" const Headers = ( { headers } )=>{ return (
Response headers
{headers}
) } Headers.propTypes = { headers: PropTypes.array.isRequired } const Duration = ( { duration } ) => { return (
Request duration
{duration} ms
) } Duration.propTypes = { duration: PropTypes.number.isRequired } export default class LiveResponse extends React.Component { static propTypes = { response: PropTypes.instanceOf(Iterable).isRequired, path: PropTypes.string.isRequired, method: PropTypes.string.isRequired, displayRequestDuration: PropTypes.bool.isRequired, specSelectors: PropTypes.object.isRequired, getComponent: PropTypes.func.isRequired, getConfigs: PropTypes.func.isRequired } shouldComponentUpdate(nextProps) { // BUG: props.response is always coming back as a new Immutable instance // same issue as responses.jsx (tryItOutResponse) return this.props.response !== nextProps.response || this.props.path !== nextProps.path || this.props.method !== nextProps.method || this.props.displayRequestDuration !== nextProps.displayRequestDuration } render() { const { response, getComponent, getConfigs, displayRequestDuration, specSelectors, path, method } = this.props const { showMutatedRequest } = getConfigs() const curlRequest = showMutatedRequest ? specSelectors.mutatedRequestFor(path, method) : specSelectors.requestFor(path, method) const status = response.get("status") const url = response.get("url") const headers = response.get("headers").toJS() const notDocumented = response.get("notDocumented") const isError = response.get("error") const body = response.get("text") const duration = response.get("duration") const headersKeys = Object.keys(headers) const contentType = headers["content-type"] const Curl = getComponent("curl") const ResponseBody = getComponent("responseBody") const returnObject = headersKeys.map(key => { return {key}: {headers[key]} }) const hasHeaders = returnObject.length !== 0 return (
{ curlRequest && } { url &&

Request URL

{url}
}

Server response

Code Details
{ status } { notDocumented ?
Undocumented
: null }
{ isError ? {`${response.get("name")}: ${response.get("message")}`} : null } { body ? : null } { hasHeaders ? : null } { displayRequestDuration && duration ? : null }
) } static propTypes = { getComponent: PropTypes.func.isRequired, response: ImPropTypes.map } }