@@ -677,7 +677,11 @@ export default class ApiRequest extends LitElement {
677
677
${ this . responseIsBlob
678
678
? html `
679
679
< div class ="tab-content col " style ="flex:1; display:${ this . activeResponseTab === 'response' ? 'flex' : 'none' } ; ">
680
- < button class ="m-btn " @click ="${ this . downloadResponseBlob } "> ${ this . responseBlobType . toUpperCase ( ) } </ button >
680
+ < button class ="m-btn " @click ="${ this . downloadResponseBlob } "> DOWNLOAD</ button >
681
+ ${ this . responseBlobType === 'view'
682
+ ? html `< button class ="m-btn " @click ="${ this . viewResponseBlob } "> VIEW (NEW TAB)</ button > `
683
+ : ''
684
+ }
681
685
</ div > `
682
686
: html `
683
687
< div class ="tab-content col m-markdown " style ="flex:1;display:${ this . activeResponseTab === 'response' ? 'flex' : 'none' } ; " >
@@ -1003,20 +1007,20 @@ export default class ApiRequest extends LitElement {
1003
1007
resp . json ( ) . then ( ( respObj ) => {
1004
1008
me . responseText = JSON . stringify ( respObj , null , 2 ) ;
1005
1009
} ) ;
1006
- } else if ( RegExp ( '7z|octet-stream|pdf| tar|zip' ) . test ( contentType ) ) {
1010
+ } else if ( RegExp ( '7z|octet-stream|tar|zip' ) . test ( contentType ) ) {
1007
1011
me . responseIsBlob = true ;
1008
1012
me . responseBlobType = 'download' ;
1009
- const contentDisposition = resp . headers . get ( 'content-disposition' ) ;
1010
- me . respContentDisposition = contentDisposition ? contentDisposition . split ( 'filename=' ) [ 1 ] : 'filename' ;
1011
- } else if ( RegExp ( '^audio|^image|^video' ) . test ( contentType ) ) {
1013
+ } else if ( RegExp ( '^audio|^image|pdf|^video' ) . test ( contentType ) ) {
1012
1014
me . responseIsBlob = true ;
1013
- me . responseBlobType = 'show ' ;
1015
+ me . responseBlobType = 'view ' ;
1014
1016
} else {
1015
1017
resp . text ( ) . then ( ( respText ) => {
1016
1018
me . responseText = respText ;
1017
1019
} ) ;
1018
1020
}
1019
1021
if ( me . responseIsBlob ) {
1022
+ const contentDisposition = resp . headers . get ( 'content-disposition' ) ;
1023
+ me . respContentDisposition = contentDisposition ? contentDisposition . split ( 'filename=' ) [ 1 ] : 'filename' ;
1020
1024
resp . blob ( ) . then ( ( respBlob ) => {
1021
1025
me . responseBlobUrl = URL . createObjectURL ( respBlob ) ;
1022
1026
} ) ;
@@ -1077,11 +1081,19 @@ export default class ApiRequest extends LitElement {
1077
1081
document . body . appendChild ( a ) ;
1078
1082
a . style = 'display: none' ;
1079
1083
a . href = this . responseBlobUrl ;
1080
- if ( this . responseBlobType === 'show' ) {
1081
- a . target = '_blank' ;
1082
- } else {
1083
- a . download = this . respContentDisposition ;
1084
- }
1084
+ a . download = this . respContentDisposition ;
1085
+ a . click ( ) ;
1086
+ a . remove ( ) ;
1087
+ }
1088
+ }
1089
+
1090
+ viewResponseBlob ( ) {
1091
+ if ( this . responseBlobUrl ) {
1092
+ const a = document . createElement ( 'a' ) ;
1093
+ document . body . appendChild ( a ) ;
1094
+ a . style = 'display: none' ;
1095
+ a . href = this . responseBlobUrl ;
1096
+ a . target = '_blank' ;
1085
1097
a . click ( ) ;
1086
1098
a . remove ( ) ;
1087
1099
}
0 commit comments