dir-uploader
Advanced tools
Comparing version 1.0.1 to 1.1.0
@@ -6,3 +6,3 @@ 'use strict'; | ||
const { combine, timestamp, label, prettyPrint } = format; | ||
const logging = createLogger({ | ||
const log = createLogger({ | ||
level: 'debug', | ||
@@ -46,3 +46,3 @@ format: format.combine( | ||
if (!givenUrl || !givenPath) { | ||
logging.log('error', colors.error('URL for upload endpoints or xml file path is not provided')); | ||
log.log('error', colors.error('URL for upload endpoints or xml file path is not provided')); | ||
} else { | ||
@@ -54,4 +54,4 @@ finalUrl = givenUrl; | ||
logging.log('debug', colors.debug('Upload Url: %s', finalUrl)); | ||
logging.log('debug', colors.debug('result file: %s', finalFile)); | ||
log.log('debug', colors.debug('Upload Url: %s', finalUrl)); | ||
log.log('debug', colors.debug('result file: %s', finalFile)); | ||
@@ -73,7 +73,7 @@ return result; | ||
let extension = filename.split('.').pop(); | ||
logging.log('debug', extension); | ||
log.log('debug', extension); | ||
if (extension === fileType) { | ||
fs.unlinkSync(dirPath + '/' + filename, err => { | ||
if (err) return logging.log('error', colors.error('%s', err)); | ||
logging.log('debug', colors.debug('%s deleted successfully', filename)); | ||
if (err) return log.log('error', colors.error('%s', err)); | ||
log.log('debug', colors.debug('%s deleted successfully', filename)); | ||
}); | ||
@@ -83,4 +83,4 @@ } | ||
fs.unlinkSync(dirPath + '/' + filename, err => { | ||
if (err) return logging.log('error', colors.error('%s', err)); | ||
logging.log('debug', colors.debug('%s deleted successfully', filename)); | ||
if (err) return log.log('error', colors.error('%s', err)); | ||
log.log('debug', colors.debug('%s deleted successfully', filename)); | ||
}); | ||
@@ -95,3 +95,3 @@ } | ||
if (arg.indexOf(param) > -1) { | ||
logging.log('debug', colors.debug('Found param %s', param)); | ||
log.log('debug', colors.debug('Found param %s', param)); | ||
val = arg.split('=', 2)[1]; | ||
@@ -103,7 +103,7 @@ } | ||
logging.log('debug', 'HERE ARE THE ARGS'); | ||
log.log('debug', 'HERE ARE THE ARGS'); | ||
process.argv.forEach((arg, i) => { | ||
logging.log('debug', ('ARG $d : $s', i, arg)); | ||
log.log('debug', ('ARG $d : $s', i, arg)); | ||
}); | ||
logging.log('debug', '-------END OF ARGS-------'); | ||
log.log('debug', '-------END OF ARGS-------'); | ||
@@ -115,9 +115,10 @@ let argUrl = getArg('url'); | ||
let exportfileType = getArg('export-file-type'); | ||
const argMetaDataFileName = getArg('metadata-file-name'); | ||
let sendData = (url, resultPath, metadataFilePath, deleteFile, filetype) => { | ||
let sendData = (url, resultPath, metadataFile, deleteFile, filetype) => { | ||
url = url || argUrl; | ||
resultPath = resultPath || argResultPath; | ||
metadataFilePath = metadataFilePath || argMetadataFilePath; | ||
metadataFile = metadataFile || argMetadataFilePath; | ||
finalDeleteFile = deleteFile || argDeleteFile; | ||
logging.log('debug', 'deleteFile: ' + finalDeleteFile); | ||
log.log('debug', 'deleteFile: ' + finalDeleteFile); | ||
let allFiles = (exportfileType === true) || (filetype === true); | ||
@@ -130,3 +131,2 @@ let filetype2 = '*'; | ||
logging.log('debug', colors.debug('URL: ' + url)); | ||
if(!validateParams(url, resultPath)) return; | ||
@@ -136,5 +136,5 @@ | ||
if (metadataFilePath) { | ||
formData.append('info', fs.createReadStream(metadataFilePath)); | ||
logging.log('debug', colors.debug('Added metadata file ' + metadataFilePath)); | ||
if (metadataFile) { | ||
formData.append('info', fs.createReadStream(metadataFile)); | ||
log.log('debug', colors.debug('Added metadata file ' + metadataFile)); | ||
} | ||
@@ -146,9 +146,9 @@ | ||
if (allFiles) { | ||
logging.log('debug', colors.debug("Uploading file: %s/%s", resultPath, filename)); | ||
log.log('debug', colors.debug("Uploading file: %s/%s", resultPath, filename)); | ||
formData.append('files', fs.createReadStream(resultPath + '/' + filename)); | ||
} else { | ||
let extension = filename.split('.').pop(); | ||
logging.log('debug', 'HERE IS fileType: ' + filetype2 + ' & extension: ' + extension); | ||
log.log('debug', 'HERE IS fileType: ' + filetype2 + ' & extension: ' + extension); | ||
if(extension === filetype2) { | ||
logging.log('debug', colors.debug("Uploading file: %s/%s", resultPath, filename)); | ||
log.log('debug', colors.debug("Uploading file: %s/%s", resultPath, filename)); | ||
formData.append('files', fs.createReadStream(resultPath + '/' + filename)); | ||
@@ -168,5 +168,5 @@ } | ||
if (result.status === 200) { | ||
logging.log('info', colors.debug('response is coming 200')); | ||
log.log('info', colors.debug('response is coming 200')); | ||
if (finalDeleteFile) { | ||
logging.log('debug', colors.debug('Deleting uploaded files in directory ' + resultPath)); | ||
log.log('debug', colors.debug('Deleting uploaded files in directory ' + resultPath)); | ||
deleteFiles(resultPath, allFiles, filetype2); | ||
@@ -178,7 +178,7 @@ } | ||
.then(json => { | ||
logging.log('info', colors.data(JSON.stringify(json))); | ||
log.log('info', colors.data(JSON.stringify(json))); | ||
return json; | ||
}) | ||
.catch(err => { | ||
logging.log('error', colors.error(err)); | ||
log.log('error', colors.error(err)); | ||
}); | ||
@@ -188,8 +188,56 @@ return dupResult; | ||
.catch(err => { | ||
logging.log('error', colors.error(err)); | ||
log.log('error', colors.error(err)); | ||
}); | ||
}; | ||
let sendMultiFolderData = (url, parentFolderPath, metadataFileName, deleteFiles, filetype) => { | ||
url = url || argUrl; | ||
parentFolderPath = parentFolderPath || argResultPath; | ||
finalDeleteFile = deleteFiles || argDeleteFile; | ||
log.log('debug', 'deleteFile: ' + finalDeleteFile); | ||
let finalFileType = (exportfileType === true) || (filetype === true); | ||
let allFiles = !finalFileType ? true : false; | ||
if(!allFiles) { | ||
if (exportfileType) { filetype2 = exportfileType; } | ||
if (filetype) { filetype2 = filetype; } | ||
} | ||
if(!validateParams(url, parentFolderPath)) return; | ||
log.debug('Passed validation!!'); | ||
// If parent directory is a folder then get sub directories | ||
// using withFileTypes so node version should be > 10.10 | ||
const getDirectories = source => | ||
fs.readdirSync(source, { withFileTypes: true }) | ||
.filter(dirent => dirent.isDirectory()) | ||
.map(dirent => dirent.name) | ||
const dirList = getDirectories(parentFolderPath); | ||
// If no take parentfolder or no sub directories - throw an error and exit | ||
if (!dirList) { | ||
throw new Error('No sub directories found in the given folder'); | ||
} | ||
// Process each subfolder - send it out as a separate call and delete it if successful | ||
log.debug('Here are the directories: ' + dirList.join(', ')); | ||
let resultArray = []; | ||
dirList.forEach((value) => { | ||
const finalFolder = parentFolderPath + '/' + value; | ||
const result = sendData(url, finalFolder, metadataFileName, | ||
true, 'xml'); | ||
resultArray.push(result); | ||
}); | ||
// Send final response with approval or error | ||
return { | ||
status: 200, | ||
results: resultArray | ||
} | ||
} | ||
module.exports = { | ||
sendData | ||
sendData, | ||
sendMultiFolderData | ||
}; |
{ | ||
"name": "dir-uploader", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"description": "An uploader module to upload all files in a directory or to upload files of a type. It sends a multipart request to the endpoint with all files attached to it", | ||
@@ -33,4 +33,5 @@ "main": "dir-uploader.js", | ||
"node-fetch": "^2.6.0", | ||
"q": "^1.5.1", | ||
"winston": "^3.2.1" | ||
} | ||
} |
# dir-uploader | ||
[![NPM](https://img.shields.io/npm/v/dir-uploader.svg)]() | ||
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=philips-software_dir-uploader&metric=alert_status)](https://sonarcloud.io/dashboard?id=philips-software_dir-uploader) | ||
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://scm.sapphirepri.com/arsalan.siddiqui/dir-uploader.git) | ||
@@ -4,0 +5,0 @@ |
13996
204
86
5