Use filename from content-disposition in a download link

This commit is contained in:
Petr Pchelko
2016-11-01 14:00:07 -07:00
parent 3fb29ecc61
commit 1dc709446a
3 changed files with 12 additions and 3 deletions

8
dist/swagger-ui.js vendored
View File

@@ -23499,6 +23499,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
var pre; var pre;
var code; var code;
var skipHighlight = false;
if (!content) { if (!content) {
code = $('<code />').text('no content'); code = $('<code />').text('no content');
pre = $('<pre class="json" />').append(code); pre = $('<pre class="json" />').append(code);
@@ -23531,6 +23532,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
var responseFilename = /filename=([^;]*);?/.exec(disposition); var responseFilename = /filename=([^;]*);?/.exec(disposition);
if(responseFilename !== null && responseFilename.length > 1) { if(responseFilename !== null && responseFilename.length > 1) {
download = responseFilename[1]; download = responseFilename[1];
fileName = download;
} }
} }
@@ -23539,6 +23541,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
a.innerText = 'Download ' + fileName; a.innerText = 'Download ' + fileName;
pre = $('<div/>').append(a); pre = $('<div/>').append(a);
skipHighlight = true;
} else { } else {
pre = $('<pre class="json" />').append('Download headers detected but your browser does not support downloading binary via XHR (Blob).'); pre = $('<pre class="json" />').append('Download headers detected but your browser does not support downloading binary via XHR (Blob).');
} }
@@ -23614,7 +23617,10 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
var response_body_el = $('.response_body', $(this.el))[0]; var response_body_el = $('.response_body', $(this.el))[0];
// only highlight the response if response is less than threshold, default state is highlight response // only highlight the response if response is less than threshold, default state is highlight response
if (opts.highlightSizeThreshold && typeof response.data !== 'undefined' && response.data.length > opts.highlightSizeThreshold) { if (opts.highlightSizeThreshold
&& typeof response.data !== 'undefined'
&& response.data.length > opts.highlightSizeThreshold
|| skipHighlight) {
return response_body_el; return response_body_el;
} else { } else {
return hljs.highlightBlock(response_body_el); return hljs.highlightBlock(response_body_el);

File diff suppressed because one or more lines are too long

View File

@@ -682,6 +682,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
var pre; var pre;
var code; var code;
var skipHighlight = false;
if (!content) { if (!content) {
code = $('<code />').text('no content'); code = $('<code />').text('no content');
pre = $('<pre class="json" />').append(code); pre = $('<pre class="json" />').append(code);
@@ -714,6 +715,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
var responseFilename = /filename=([^;]*);?/.exec(disposition); var responseFilename = /filename=([^;]*);?/.exec(disposition);
if(responseFilename !== null && responseFilename.length > 1) { if(responseFilename !== null && responseFilename.length > 1) {
download = responseFilename[1]; download = responseFilename[1];
fileName = download;
} }
} }
@@ -722,6 +724,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
a.innerText = 'Download ' + fileName; a.innerText = 'Download ' + fileName;
pre = $('<div/>').append(a); pre = $('<div/>').append(a);
skipHighlight = true;
} else { } else {
pre = $('<pre class="json" />').append('Download headers detected but your browser does not support downloading binary via XHR (Blob).'); pre = $('<pre class="json" />').append('Download headers detected but your browser does not support downloading binary via XHR (Blob).');
} }
@@ -797,7 +800,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
var response_body_el = $('.response_body', $(this.el))[0]; var response_body_el = $('.response_body', $(this.el))[0];
// only highlight the response if response is less than threshold, default state is highlight response // only highlight the response if response is less than threshold, default state is highlight response
if (opts.highlightSizeThreshold && typeof response.data !== 'undefined' && response.data.length > opts.highlightSizeThreshold) { if (opts.highlightSizeThreshold && typeof response.data !== 'undefined' && response.data.length > opts.highlightSizeThreshold || skipHighlight) {
return response_body_el; return response_body_el;
} else { } else {
return hljs.highlightBlock(response_body_el); return hljs.highlightBlock(response_body_el);