@@ -4,30 +4,39 @@ var options;
4
4
5
5
var queue = { } ;
6
6
7
- function addToDropboxQueue ( message ) {
8
- var token = message . token ;
9
- var fileContent = message . file ;
10
- var fileName = message . fileName ;
11
- var saveObject = {
12
- timeout : setTimeout ( function ( ) {
13
- saveToDropBox ( fileContent , fileName , token ) ;
14
- } , options . delayTime )
15
- } ;
16
- if ( queue [ fileName ] ) {
17
- clearTimeout ( queue [ fileName ] . timeout ) ;
7
+ function addToDropboxQueue ( message ) {
8
+ var id = message . fileName ;
9
+ if ( ! message . attempts ) {
10
+ message . attempts = 0 ;
18
11
}
19
- queue [ fileName ] = saveObject ;
12
+
13
+ if ( message . attempts > options . maxAttempts ) {
14
+ console . error ( 'Max attempts reached for' , id ) ;
15
+ return ;
16
+ }
17
+
18
+ var timeout = setTimeout ( function saveToDropBoxWrapper ( ) {
19
+ saveToDropBox ( message ) ;
20
+ delete queue [ id ] ;
21
+ } , options . delayTime ) ;
22
+
23
+ if ( queue [ id ] ) {
24
+ clearTimeout ( queue [ id ] ) ;
25
+ }
26
+ queue [ id ] = timeout ;
20
27
}
21
28
22
- function saveToDropBox ( file , name , token ) {
29
+ function saveToDropBox ( message ) {
23
30
var client = new Dropbox . Client ( {
24
31
key : options . id ,
25
32
secret : options . secret ,
26
- token : token // jshint ignore:line
33
+ token : message . token
27
34
} ) ;
28
35
29
- client . writeFile ( name , file , function ( err ) {
36
+ client . writeFile ( message . fileName , message . file , function ( err ) {
30
37
if ( err ) {
38
+ message . attempts ++ ;
39
+ addToDropboxQueue ( message ) ;
31
40
console . error ( err ) ;
32
41
}
33
42
} ) ;
0 commit comments