Skip to content

Commit 4633a46

Browse files
author
Roger Urscheler
committed
Upload version 1.2.7402
1 parent 61ecac1 commit 4633a46

7 files changed

+3618
-2120
lines changed

File.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
self.size = self.stat.size;
2323
}
2424

25-
if ('string' === typeof input) {
25+
if (typeof input === 'string') {
2626
self.path = input;
2727
} else {
2828
Object.keys(input).forEach(function (k) {

FileUpload.js

+43-61
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,40 @@ module.exports = function FileUpload(config) {
1212

1313
var MAX_FILE_COUNT = 10;
1414
var MAX_FILE_SIZE = 100000000;
15-
var stat = 0;
1615

17-
var logger = NodeSDK.logger;
16+
var _stat = 0;
17+
18+
var _logger = NodeSDK.logger;
1819
var _config = config || {};
1920

2021
function isFileOK(file) {
21-
//TODO optimize for async flow
2222
var error = null;
2323

2424
if (file.path) {
2525
if (!fs.existsSync(file.path)) {
2626
error = new Error('[FileUpload] file not found');
2727
}
28-
stat = fs.statSync(file.path);
29-
if (stat.size > MAX_FILE_SIZE) {
28+
_stat = fs.statSync(file.path);
29+
if (_stat.size > MAX_FILE_SIZE) {
3030
error = new Error('[FileUpload] max file size exceeded');
3131
}
3232
} else if (file.buffer) {
33-
stat = { size: file.buffer.length };
34-
if (stat.size > MAX_FILE_SIZE) {
33+
_stat = { size: file.buffer.length };
34+
if (_stat.size > MAX_FILE_SIZE) {
3535
error = new Error('[FileUpload] max file size exceeded');
3636
}
3737
} else {
3838
error = new Error('[FileUpload] no file provided');
3939
}
4040
if (file.type === 'application/json') {
41-
logger.debug('[FileUpload]: replace file type ', file.type);
41+
_logger.debug('[FileUpload]: replace file type ', file.type);
4242
file.type = 'text/plain'; //upload json files as text files
4343
}
4444
return error;
4545
}
4646

4747
function urlToOptions(url, file, stat, opts) {
48-
logger.debug('[FileUpload] urlToOptions', url, file, stat);
48+
_logger.debug('[FileUpload] urlToOptions', url, file, stat);
4949
var parts = nodeUrl.parse(url);
5050
var options = {
5151
rejectUnauthorized: NodeSDK.rejectUnauthorized,
@@ -68,7 +68,7 @@ module.exports = function FileUpload(config) {
6868
opts.rtcSessionId && (options.headers['x-rtcsession'] = opts.rtcSessionId);
6969
}
7070

71-
logger.debug('[FileUpload] options', options);
71+
_logger.debug('[FileUpload] options', options);
7272
return options;
7373
}
7474

@@ -79,47 +79,47 @@ module.exports = function FileUpload(config) {
7979
reject(error);
8080
return;
8181
}
82-
var options = urlToOptions(url, file, stat, opts);
82+
var options = urlToOptions(url, file, _stat, opts);
8383
var req = https.request(options, function (res) {
8484
if (!res) {
85-
logger.error('[FileUpload]: no res in https callback');
85+
_logger.error('[FileUpload]: no res in https callback');
8686
error = new Error('[FileUpload]: no res in https callback');
8787
reject(error);
8888
}
89-
logger.debug('[FileUpload]: https callback', res.statusCode, res.statusMessage, res.headers);
89+
_logger.debug('[FileUpload]: https callback', res.statusCode, res.statusMessage, res.headers);
9090
if (res.statusCode !== 200) {
91-
logger.error('[FileUpload]: status code: ' + res.statusCode, res.statusMessage);
91+
_logger.error('[FileUpload]: status code: ' + res.statusCode, res.statusMessage);
9292
error = new Error('[FileUpload]: status code ' + res.statusCode, res.statusMessage);
9393
reject(error);
9494
}
9595
var body = '';
9696
res.on('data', function (d) {
97-
logger.debug('[FileUpload]: result on data', d);
97+
_logger.debug('[FileUpload]: result on data', d);
9898
body += d;
9999
});
100100
res.on('end', function () {
101-
logger.debug('[FileUpload]: result on end', body.toString('utf8'));
101+
_logger.debug('[FileUpload]: result on end', body.toString('utf8'));
102102
resolve(body);
103103
});
104104
res.on('error', function (e) {
105-
logger.debug('[FileUpload]: result on error', e);
105+
_logger.debug('[FileUpload]: result on error', e);
106106
reject(e);
107107
});
108108
});
109109

110110
if (file.path) {
111111
var readStream = fs.createReadStream(file.path);
112112
readStream.on('data', function (chunk) {
113-
logger.debug('[FileUpload]: readStream on data', file.path, chunk);
113+
_logger.debug('[FileUpload]: readStream on data', file.path, chunk);
114114
req.write(chunk);
115115
});
116116
readStream.on('end', function () {
117-
logger.debug('[FileUpload]: readStream on end ', file.path);
117+
_logger.debug('[FileUpload]: readStream on end ', file.path);
118118
req.end();
119119
});
120120

121121
req.on('error', function (e) {
122-
logger.debug('[FileUpload]: request on error', file.path, e);
122+
_logger.debug('[FileUpload]: request on error', file.path, e);
123123
reject(e);
124124
});
125125
} else if (file.buffer) {
@@ -130,58 +130,40 @@ module.exports = function FileUpload(config) {
130130

131131
this.uploadFiles = function (files, domain) {
132132
domain = domain || _config.domain;
133-
logger.debug('[FileUpload] node SDK uploadFiles: ', files, domain);
133+
_logger.debug('[FileUpload] node SDK uploadFiles: ', files, domain);
134134

135135
if (files.length > MAX_FILE_COUNT) {
136136
return Promise.reject('[FileUpload]: Exceeded maximum of %d% files per message', MAX_FILE_COUNT);
137137
}
138138

139139
var result = [];
140140

141-
// Find large images that need to be resized
142-
var resizePromises = [];
143-
/*
144-
files.forEach(function (file) {
145-
// Even create a thumbnail for small images
146-
if (circuit.Utils.isSupportedImage && circuit.Utils.isSupportedImage(file.type)) {
147-
resizePromises.push(createThumbnail(file));
148-
logger.warning('[FileUpload]: node SDK does not yet support creation of thumbnails');
149-
}
150-
});
151-
*/
152-
153-
return Promise.all(resizePromises)
154-
.then(function (blobs) {
155-
// Add the blob's (thumbnails) to the list of files to be upoaded
156-
files = files.concat(blobs);
157-
158-
// Sequentially (but async) upload the files. Once all files are
159-
// uploaded, resolve the Promise passing the upload results.
160-
var itemId = null;
161-
return files.reduce(function (sequence, file) {
162-
return sequence.then(function () {
163-
var url = 'https://' + domain + '/fileapi?itemid=' + (itemId || 'NULL');
164-
return uploadFile(file, url)
165-
.then(function (res) {
166-
var resp = JSON.parse(res)[0];
167-
itemId = itemId || resp.id;
168-
var attachmentMetaData = {
169-
fileId: resp.fileid.slice(-1)[0],
170-
fileName: file.name,
171-
itemId: itemId,
172-
mimeType: resp.mimeType || file.type,
173-
size: file.size
174-
};
175-
result.push(attachmentMetaData);
176-
return result;
177-
});
141+
// Sequentially (but async) upload the files. Once all files are
142+
// uploaded, resolve the Promise passing the upload results.
143+
var itemId = null;
144+
return files.reduce(function (sequence, file) {
145+
return sequence.then(function () {
146+
var url = 'https://' + domain + '/fileapi?itemid=' + (itemId || 'NULL');
147+
return uploadFile(file, url)
148+
.then(function (res) {
149+
var resp = JSON.parse(res)[0];
150+
itemId = itemId || resp.id;
151+
var attachmentMetaData = {
152+
fileId: resp.fileid.slice(-1)[0],
153+
fileName: file.name,
154+
itemId: itemId,
155+
mimeType: resp.mimeType || file.type,
156+
size: file.size
157+
};
158+
result.push(attachmentMetaData);
159+
return result;
178160
});
179-
}, Promise.resolve());
180-
});
161+
});
162+
}, Promise.resolve());
181163
};
182164

183165
this.uploadWhiteboardFile = function (file, rtcSessionId) {
184-
logger.debug('[FileUpload] node SDK uploadWhiteboardFile: ', file);
166+
_logger.debug('[FileUpload] node SDK uploadWhiteboardFile: ', file);
185167

186168
var url = 'https://' + _config.domain + '/fileapi';
187169
var opts = {

XMLHttpRequest.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ module.exports = function (config) {
6262
}
6363
};
6464

65-
this.send = function (data) {
65+
this.send = function (sendData) {
6666
logger.debug('[XMLHttpRequest]: send');
6767
var xhr = this;
6868
logger.debug('[XMLHttpRequest]: ' + JSON.stringify(this.httpReqOptions, null, 2));
@@ -85,9 +85,9 @@ module.exports = function (config) {
8585

8686
res.setEncoding('utf8');
8787

88-
res.on('data', function (data) {
89-
logger.debug('[XMLHttpRequest]: ready to call onload with ' + JSON.stringify(data, null, 2));
90-
xhr.responseText = data;
88+
res.on('data', function (rcvData) {
89+
logger.debug('[XMLHttpRequest]: ready to call onload with ' + JSON.stringify(rcvData, null, 2));
90+
xhr.responseText = rcvData;
9191
xhr.onload();
9292
});
9393

@@ -98,9 +98,9 @@ module.exports = function (config) {
9898

9999
});
100100

101-
if (data) {
101+
if (sendData) {
102102
logger.debug('[XMLHttpRequest]: sending data');
103-
req.write(data);
103+
req.write(sendData);
104104
}
105105

106106
req.on('error', function (e) {

circuit-node.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*
1616
*/
1717

18-
/*global Circuit*/
18+
/* global Circuit */
1919

2020
///////////////////////////////////////////////////////////////////////////////////////
2121
// Global objects exposed for Node.js (WebSocket and XMLHttpRequest)

0 commit comments

Comments
 (0)