diff --git a/src/plugins/network/RequestDetails.js b/src/plugins/network/RequestDetails.js index 59506fca8..b37170bdf 100644 --- a/src/plugins/network/RequestDetails.js +++ b/src/plugins/network/RequestDetails.js @@ -23,6 +23,8 @@ import { import {getHeaderValue} from './index.js'; import querystring from 'querystring'; +// $FlowFixMe +import xmlBeautifier from 'xml-beautifier'; const WrappingText = styled(Text)({ wordWrap: 'break-word', @@ -487,6 +489,22 @@ class JSONText extends Component<{children: any}> { } } +class XMLText extends Component<{body: any}> { + static NoScrollbarText = styled(Text)({ + overflowY: 'hidden', + }); + + render() { + const xmlPretty = xmlBeautifier(this.props.body); + return ( + + {xmlPretty} + {'\n'} + + ); + } +} + class JSONTextFormatter { formatRequest = (request: Request) => { return this.format( @@ -522,6 +540,28 @@ class JSONTextFormatter { }; } +class XMLTextFormatter { + formatRequest = (request: Request) => { + return this.format( + decodeBody(request), + getHeaderValue(request.headers, 'content-type'), + ); + }; + + formatResponse = (request: Request, response: Response) => { + return this.format( + decodeBody(response), + getHeaderValue(response.headers, 'content-type'), + ); + }; + + format = (body: string, contentType: string) => { + if (contentType.startsWith('text/html')) { + return ; + } + }; +} + class JSONFormatter { formatRequest = (request: Request) => { return this.format( @@ -665,6 +705,7 @@ const BodyFormatters: Array = [ new GraphQLFormatter(), new JSONFormatter(), new FormUrlencodedFormatter(), + new XMLTextFormatter(), ]; const TextBodyFormatters: Array = [new JSONTextFormatter()]; diff --git a/src/plugins/network/package.json b/src/plugins/network/package.json index d29fc3a21..b03cd9358 100644 --- a/src/plugins/network/package.json +++ b/src/plugins/network/package.json @@ -4,6 +4,7 @@ "main": "index.js", "license": "MIT", "dependencies": { - "pako": "^1.0.6" + "pako": "^1.0.6", + "xml-beautifier": "^0.4.0" } } diff --git a/src/plugins/network/yarn.lock b/src/plugins/network/yarn.lock index 3805f8e17..c5c195e24 100644 --- a/src/plugins/network/yarn.lock +++ b/src/plugins/network/yarn.lock @@ -5,3 +5,15 @@ pako@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +repeat-string@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +xml-beautifier@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/xml-beautifier/-/xml-beautifier-0.4.0.tgz#8ead9e48aa4ffc9c702eca82d53130f0f3aa3c48" + integrity sha512-aIoZ2Dx0VkYuvP35WAdMDi7voG1Kn36vi7jKkHuLx5K5fqJeynNqKulSvyFpNu2+VNtDfbggd+GbDdGIF/ZJSw== + dependencies: + repeat-string "1.6.1"