Replace restful-js with Axios
[sdc.git] / openecomp-ui / src / nfvo-utils / ShowFileSaveDialog.js
1 /*
2  * Copyright © 2016-2017 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 function getTimestampString() {
18         let date = new Date();
19         let z = n => n < 10 ? '0' + n : n;
20         return `${date.getFullYear()}-${z(date.getMonth())}-${z(date.getDate())}_${z(date.getHours())}-${z(date.getMinutes())}`;
21 }
22
23
24 export default function showFileSaveDialog({blob, headers, defaultFilename, addTimestamp}) {
25         let filename;
26         let contentDisposition = headers['content-disposition'] ? headers['content-disposition'] : '';
27         let match = contentDisposition ? contentDisposition.match(/filename=(.*?)(;|$)/) : false;
28         if (match) {
29                 filename = match[1];
30         } else {
31                 filename = defaultFilename;
32         }
33
34         if (addTimestamp) {
35                 filename = filename.replace(/(^.*?)\.([^.]+$)/, `$1_${getTimestampString()}.$2`);
36         }
37
38         let link = document.createElement('a');
39         let url = URL.createObjectURL(blob);
40         link.href = url;
41         link.download = filename;
42         link.style.display = 'none';
43         document.body.appendChild(link);
44         link.click();
45         setTimeout(function(){
46                 document.body.removeChild(link);
47                 URL.revokeObjectURL(url);
48         }, 0);
49 };