mirror of
https://github.com/hashicorp/vault.git
synced 2026-05-05 04:16:31 +02:00
parent
f39bb43a4c
commit
1df0bb7ddd
@ -28,25 +28,27 @@ const EXTENSION_TO_MIME: Extensions = {
|
||||
};
|
||||
|
||||
export default class DownloadService extends Service {
|
||||
download(filename: string, content: string, extension: string) {
|
||||
// replace spaces with hyphens, append extension to filename
|
||||
const formattedFilename =
|
||||
`${filename?.replace(/\s+/g, '-')}.${extension}` ||
|
||||
`vault-data-${timestamp.now().toISOString()}.${extension}`;
|
||||
formatFilename(filename: string, extension: keyof Extensions = 'txt') {
|
||||
const downloadTimestamp = timestamp.now().toISOString();
|
||||
// replace spaces with underscores
|
||||
const name = filename ? filename?.replace(/\s+/g, '_') : 'vault_data';
|
||||
// appends extension to filename
|
||||
return `${name}_${downloadTimestamp}.${extension}`;
|
||||
}
|
||||
|
||||
download(filename: string, content: any, extension: keyof Extensions) {
|
||||
const formattedFilename = this.formatFilename(filename, extension);
|
||||
|
||||
// map extension to MIME type or use default
|
||||
const mimetype = EXTENSION_TO_MIME[extension as keyof Extensions] || 'text/plain';
|
||||
const mimetype = EXTENSION_TO_MIME[extension] || 'text/plain';
|
||||
|
||||
// commence download
|
||||
const { document, URL } = window;
|
||||
const downloadElement = document.createElement('a');
|
||||
const data = new File([content], formattedFilename, { type: mimetype });
|
||||
downloadElement.download = formattedFilename;
|
||||
downloadElement.href = URL.createObjectURL(data);
|
||||
document.body.appendChild(downloadElement);
|
||||
downloadElement.click();
|
||||
URL.revokeObjectURL(downloadElement.href);
|
||||
downloadElement.remove();
|
||||
return formattedFilename;
|
||||
}
|
||||
|
||||
@ -63,7 +65,7 @@ export default class DownloadService extends Service {
|
||||
this.download(filename, content, 'pem');
|
||||
}
|
||||
|
||||
miscExtension(filename: string, content: string, extension: string) {
|
||||
miscExtension(filename: string, content: string, extension: keyof Extensions) {
|
||||
this.download(filename, content, extension);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user