import React, { Component } from 'react' import _ from 'lodash' import { FlowActions } from '../../actions.js' import { RequestUtils, isValidHttpVersion, parseUrl, parseHttpVersion } from '../../flow/utils.js' import { Key, formatTimeStamp } from '../../utils.js' import ContentView from '../ContentView' import ValueEditor from '../ValueEditor' import Headers from './Headers' class RequestLine extends Component { render() { const { flow } = this.props return (
FlowActions.update(flow, { request: { method } })} inline />   FlowActions.update(flow, { request: Object.assign({ path: '' }, parseUrl(url)) })} isValid={url => !!parseUrl(url).host} inline />   FlowActions.update(flow, { request: { http_version: parseHttpVersion(ver) } })} isValid={isValidHttpVersion} inline />
) } } class ResponseLine extends Component { render() { const { flow } = this.props return (
FlowActions.update(flow, { response: { http_version: parseHttpVersion(nextVer) } })} isValid={isValidHttpVersion} inline />   FlowActions.update(flow, { response: { code: parseInt(code) } })} isValid={code => /^\d+$/.test(code)} inline />   FlowActions.update(flow, { response: { msg } })} inline />
) } } export class Request extends Component { render() { const { flow } = this.props return (
FlowActions.update(flow, { request: { headers } })} />
) } edit(k) { switch (k) { case 'm': this.refs.requestLine.refs.method.focus() break case 'u': this.refs.requestLine.refs.url.focus() break case 'v': this.refs.requestLine.refs.httpVersion.focus() break case 'h': this.refs.headers.edit() break default: throw new Error(`Unimplemented: ${k}`) } } } export class Response extends Component { render() { const { flow } = this.props return (
FlowActions.update(flow, { response: { headers } })} />
) } edit(k) { switch (k) { case 'c': this.refs.responseLine.refs.status_code.focus() break case 'm': this.refs.responseLine.refs.msg.focus() break case 'v': this.refs.responseLine.refs.httpVersion.focus() break case 'h': this.refs.headers.edit() break default: throw new Error(`'Unimplemented: ${k}`) } } } export function Error({ flow }) { return (
{flow.error.msg}
{formatTimeStamp(flow.error.timestamp)}
) }