File tree Expand file tree Collapse file tree 6 files changed +24
-17
lines changed Expand file tree Collapse file tree 6 files changed +24
-17
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ import { styled } from '../../styles';
1010import { ObservablePromise , isObservablePromise } from '../../util/observable' ;
1111import { asError , unreachableCheck } from '../../util/error' ;
1212import { stringToBuffer } from '../../util/buffer' ;
13+ import { lastHeader } from '../../util/headers' ;
1314
1415import { ViewableContentType } from '../../model/events/content-types' ;
1516import { Formatters , isEditorFormatter } from '../../model/events/body-formatting' ;
@@ -200,7 +201,7 @@ export class ContentViewer extends React.Component<ContentViewerProps> {
200201 return < FormatterContainer expanded = { this . props . expanded } >
201202 < formatterConfig . Component
202203 content = { this . contentBuffer }
203- headers = { this . props . headers }
204+ rawContentType = { lastHeader ( this . props . headers ?. [ 'content-type' ] ) }
204205 />
205206 </ FormatterContainer > ;
206207 }
Original file line number Diff line number Diff line change @@ -64,7 +64,10 @@ const Spacer = styled.div`
6464` ;
6565
6666function urlSafeBase64 ( content : string ) {
67- return stringToBuffer ( content ) . toString ( 'base64url' ) ;
67+ return stringToBuffer ( content )
68+ . toString ( 'base64' )
69+ . replace ( / \+ / g, '-' )
70+ . replace ( / \/ / g, '_' ) ;
6871}
6972
7073function getConfigRequestIds ( eventsStore : EventsStore ) {
Original file line number Diff line number Diff line change @@ -19,7 +19,7 @@ export interface EditorFormatter {
1919
2020type FormatComponentProps = {
2121 content : Buffer ;
22- headers ?: Headers ;
22+ rawContentType : string | undefined ;
2323} ;
2424
2525type FormatComponent = React . ComponentType < FormatComponentProps > ;
@@ -65,7 +65,7 @@ export const Formatters: { [key in ViewableContentType]: Formatter } = {
6565 language : 'text' ,
6666 cacheKey : Symbol ( 'text' ) ,
6767 isEditApplicable : false ,
68- render : ( input : Buffer , headers ?: Headers ) => {
68+ render : ( input : Buffer ) => {
6969 return bufferToString ( input ) ;
7070 }
7171 } ,
@@ -112,7 +112,9 @@ export const Formatters: { [key in ViewableContentType]: Formatter } = {
112112 // showing the loading spinner that churns the layout in short content cases.
113113 return JSON . stringify (
114114 JSON . parse ( inputAsString ) ,
115- null , 2 ) ;
115+ null ,
116+ 2
117+ ) ;
116118 // ^ Same logic as in UI-worker-formatter
117119 } catch ( e ) {
118120 // Fallback to showing the raw un-formatted JSON:
Original file line number Diff line number Diff line change @@ -153,7 +153,7 @@ export function getDefaultMimeType(contentType: ViewableContentType): string {
153153 return _ . findKey ( mimeTypeToContentTypeMap , ( c ) => c === contentType ) ! ;
154154}
155155
156- function isValidAlphaNumOrSpace ( byte : number ) {
156+ function isAlphaNumOrEquals ( byte : number ) {
157157 return ( byte >= 65 && byte <= 90 ) || // A-Z
158158 ( byte >= 97 && byte <= 122 ) || // a-z
159159 ( byte >= 48 && byte <= 57 ) || // 0-9
@@ -162,14 +162,16 @@ function isValidAlphaNumOrSpace(byte: number) {
162162
163163function isValidStandardBase64Byte ( byte : number ) {
164164 // + / (standard)
165- return byte === 43 || byte === 47
166- || isValidAlphaNumOrSpace ( byte ) ;
165+ return byte === 43 ||
166+ byte === 47 ||
167+ isAlphaNumOrEquals ( byte ) ;
167168}
168169
169170function isValidURLSafeBase64Byte ( byte : number ) {
170171 // - _ (URL-safe version)
171- return byte === 45 || byte === 95
172- || isValidAlphaNumOrSpace ( byte ) ;
172+ return byte === 45 ||
173+ byte === 95 ||
174+ isAlphaNumOrEquals ( byte ) ;
173175}
174176
175177export function getCompatibleTypes (
Original file line number Diff line number Diff line change @@ -57,9 +57,9 @@ export type RequestContentData = {
5757
5858export interface ExtendedHarRequest extends HarFormat . Request {
5959 _requestBodyStatus ?:
60- | 'discarded:too-large'
61- | 'discarded:not-representable' // to indicate that extended field `_content` is populated with base64 `postData`
62- | 'discarded:not-decodable' ;
60+ | 'discarded:too-large'
61+ | 'discarded:not-representable' // to indicate that extended field `_content` is populated with base64 `postData`
62+ | 'discarded:not-decodable' ;
6363 _content ?: RequestContentData ;
6464 _trailers ?: HarFormat . Header [ ] ;
6565}
@@ -435,10 +435,10 @@ function generateHarWebSocketMessage(
435435 return {
436436 // Note that msg.direction is from the perspective of Mockttp, not the client.
437437 type : message . direction === 'sent'
438- ? 'receive'
438+ ? 'receive'
439439 : message . direction === 'received'
440440 ? 'send'
441- : unreachableCheck ( message . direction ) ,
441+ : unreachableCheck ( message . direction ) ,
442442
443443 opcode : message . isBinary ? 2 : 1 ,
444444 data : message . isBinary
Original file line number Diff line number Diff line change @@ -56,8 +56,7 @@ const WorkerFormatters = {
5656 } ,
5757 base64 : ( content : Buffer ) => {
5858 const b64 = content . toString ( 'ascii' ) ;
59- const encoding = b64 . match ( / [ - _ ] / ) ? 'base64url' : 'base64' ;
60- return Buffer . from ( b64 , encoding ) . toString ( 'utf8' ) ;
59+ return Buffer . from ( b64 , 'base64' ) . toString ( 'utf8' ) ;
6160 } ,
6261 markdown : ( content : Buffer ) => {
6362 return content . toString ( 'utf8' ) ;
You can’t perform that action at this time.
0 commit comments