-
Notifications
You must be signed in to change notification settings - Fork 819
/
Copy pathfileService.ts
33 lines (28 loc) · 1.09 KB
/
fileService.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const fs = require('fs');
const util = require('util');
const axios = require('axios');
const readdir = util.promisify(fs.readdir);
// Generates File Name with Sequence
const geneFileName = async (fileDir) => {
const filenameConst = 'UserAttachment';
const files = await readdir(fileDir);
const filteredFiles = files.filter(f => f.includes(filenameConst)).map(f => parseInt(f.split(filenameConst)[1].split('.')[0]));
const maxSeq = Math.max(0, filteredFiles);
const filename = `${ filenameConst }${ maxSeq + 1 }.png`;
return filename;
};
// Download and Save Streams into File
const writeFile = async (contentUrl, config, filePath) => {
const response = await axios({ method: 'GET', url: contentUrl, responseType: 'stream' });
return await new Promise((resolve, reject) => response.data.pipe(fs.createWriteStream(filePath)).once('finish', resolve).once('error', reject));
};
// Returns File Size
const getFileSize = async (FilePath) => {
const stats = fs.statSync(FilePath);
return stats.size;
};
module.exports = {
geneFileName,
getFileSize,
writeFile
};