import React, {PureComponent} from 'react'; import PropTypes from 'prop-types'; import autobind from 'autobind-decorator'; import RawEditor from './raw-editor'; import UrlEncodedEditor from './url-encoded-editor'; import FormEditor from './form-editor'; import FileEditor from './file-editor'; import {getContentTypeFromHeaders, CONTENT_TYPE_FORM_URLENCODED, CONTENT_TYPE_FORM_DATA, CONTENT_TYPE_FILE, CONTENT_TYPE_GRAPHQL} from '../../../../common/constants'; import {newBodyRaw, newBodyFormUrlEncoded, newBodyForm, newBodyFile} from '../../../../models/request'; import GraphQLEditor from './graph-ql-editor'; @autobind class BodyEditor extends PureComponent { _handleRawChange (rawValue) { const {onChange, request} = this.props; const contentType = getContentTypeFromHeaders(request.headers); const newBody = newBodyRaw(rawValue, contentType || ''); onChange(newBody); } _handleGraphQLChange (content) { const {onChange} = this.props; const newBody = newBodyRaw(content, CONTENT_TYPE_GRAPHQL); onChange(newBody); } _handleFormUrlEncodedChange (parameters) { const {onChange} = this.props; const newBody = newBodyFormUrlEncoded(parameters); onChange(newBody); } _handleFormChange (parameters) { const {onChange} = this.props; const newBody = newBodyForm(parameters); onChange(newBody); } _handleFileChange (path) { const {onChange} = this.props; const newBody = newBodyFile(path); onChange(newBody); } render () { const { keyMap, fontSize, indentSize, lineWrapping, request, workspace, settings, environmentId, handleRender: render, handleGetRenderContext: getRenderContext } = this.props; const noRender = request.settingDisableRenderRequestBody; const handleRender = noRender ? null : render; const handleGetRenderContext = noRender ? null : getRenderContext; const uniqueKey = `${request._id}::${noRender}`; const fileName = request.body.fileName; const mimeType = request.body.mimeType; const isBodyEmpty = typeof mimeType !== 'string' && !request.body.text; if (mimeType === CONTENT_TYPE_FORM_URLENCODED) { return ( ); } else if (mimeType === CONTENT_TYPE_FORM_DATA) { return ( ); } else if (mimeType === CONTENT_TYPE_FILE) { return ( ); } else if (mimeType === CONTENT_TYPE_GRAPHQL) { return ( ); } else if (!isBodyEmpty) { const contentType = getContentTypeFromHeaders(request.headers) || mimeType; return ( ); } else { return (



Select a body type from above

); } } } BodyEditor.propTypes = { // Required onChange: PropTypes.func.isRequired, handleUpdateRequestMimeType: PropTypes.func.isRequired, handleRender: PropTypes.func.isRequired, handleGetRenderContext: PropTypes.func.isRequired, request: PropTypes.object.isRequired, workspace: PropTypes.object.isRequired, settings: PropTypes.object.isRequired, environmentId: PropTypes.string.isRequired, // Optional fontSize: PropTypes.number, indentSize: PropTypes.number, keyMap: PropTypes.string, lineWrapping: PropTypes.bool }; export default BodyEditor;