Skip to content

Commit

Permalink
Merge pull request hoppscotch#280 from Daniellunsc/add-download-button
Browse files Browse the repository at this point in the history
Add download button
  • Loading branch information
liyasthomas authored Nov 7, 2019
2 parents a457701 + 7d07081 commit dcf5c2a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ _Customized themes are also synced with local session storage_
👋 **Responses**: Contains the status line, headers and the message/response body.

- Copy response to clipboard
- Download response to a local file
- View preview for HTML responses

_HTML responses have "Preview HTML" feature_
Expand Down
37 changes: 37 additions & 0 deletions pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@
>
<i class="material-icons">file_copy</i>
</button>

<button
class="icon"
@click="saveRequest"
Expand Down Expand Up @@ -551,6 +552,10 @@
<i class="material-icons">file_copy</i>
<span>Copy</span>
</button>
<button class="icon" @click="downloadResponse" ref="downloadResponse" v-if="response.body">
<i class="material-icons">cloud_download</i>
<span>Download</span>
</button>
</div>
</div>
<div id="response-details-wrapper">
Expand Down Expand Up @@ -677,6 +682,7 @@ export default {
preRequestScript: "",
copyButton: '<i class="material-icons">file_copy</i>',
copiedButton: '<i class="material-icons">done</i>',
downloadedButton: '<i class="material-icons">cloud_done</i>',
isHidden: true,
response: {
status: "",
Expand Down Expand Up @@ -1535,6 +1541,37 @@ export default {
1000
);
},
downloadResponse(){
// Storing the data in a organized way
var dataToWrite = JSON.stringify(this.response.body, null, 2);
// Default filename, maybe its better to add the url requested ?
var filename = 'response'
// Creating the Blob with data and mimetype
var file = new Blob([dataToWrite], {type: 'application/json'});
// Create a "a" element
var a = document.createElement("a"),
url = URL.createObjectURL(file);
// Point "a" element to url of new to be downloaded
a.href = url;
// Makes "a" element downloadable with filename
a.download = filename;
// Appends the brand new "a" element on body.
document.body.appendChild(a);
// Finally click on element to download it!
a.click();
this.$refs.downloadResponse.innerHTML =
this.downloadedButton + "<span>Downloaded</span>";
this.$toast.success("Download started, check your browser", {
icon: "done"
});
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
},
togglePreview() {
this.previewEnabled = !this.previewEnabled;
if (this.previewEnabled) {
Expand Down

0 comments on commit dcf5c2a

Please sign in to comment.