@@ -122,6 +122,53 @@ function writeFile(path,content) {
122122 } ) ;
123123}
124124
125+
126+ function readFile ( path , backupPath , emptyResponse , type ) {
127+ return when . promise ( function ( resolve ) {
128+ fs . readFile ( path , 'utf8' , function ( err , data ) {
129+ if ( ! err ) {
130+ if ( data . length === 0 ) {
131+ log . warn ( log . _ ( "storage.localfilesystem.empty" , { type :type } ) ) ;
132+ try {
133+ var backupStat = fs . statSync ( backupPath ) ;
134+ if ( backupStat . size === 0 ) {
135+ // Empty flows, empty backup - return empty flow
136+ return resolve ( emptyResponse ) ;
137+ }
138+ // Empty flows, restore backup
139+ log . warn ( log . _ ( "storage.localfilesystem.restore" , { path :backupPath , type :type } ) ) ;
140+ fs . copy ( backupPath , path , function ( backupCopyErr ) {
141+ if ( backupCopyErr ) {
142+ // Restore backup failed
143+ log . warn ( log . _ ( "storage.localfilesystem.restore-fail" , { message :backupCopyErr . toString ( ) , type :type } ) ) ;
144+ resolve ( [ ] ) ;
145+ } else {
146+ // Loop back in to load the restored backup
147+ resolve ( readFile ( path , backupPath , emptyResponse , type ) ) ;
148+ }
149+ } ) ;
150+ return ;
151+ } catch ( backupStatErr ) {
152+ // Empty flow file, no back-up file
153+ return resolve ( emptyResponse ) ;
154+ }
155+ }
156+ try {
157+ return resolve ( JSON . parse ( data ) ) ;
158+ } catch ( parseErr ) {
159+ log . warn ( log . _ ( "storage.localfilesystem.invalid" , { type :type } ) ) ;
160+ return resolve ( emptyResponse ) ;
161+ }
162+ } else {
163+ if ( type === 'flow' ) {
164+ log . info ( log . _ ( "storage.localfilesystem.create" , { type :type } ) ) ;
165+ }
166+ resolve ( emptyResponse ) ;
167+ }
168+ } ) ;
169+ } ) ;
170+ }
171+
125172var localfilesystem = {
126173 init : function ( _settings ) {
127174 settings = _settings ;
@@ -191,52 +238,12 @@ var localfilesystem = {
191238 } ,
192239
193240 getFlows : function ( ) {
194- return when . promise ( function ( resolve ) {
195- if ( ! initialFlowLoadComplete ) {
196- initialFlowLoadComplete = true ;
197- log . info ( log . _ ( "storage.localfilesystem.user-dir" , { path :settings . userDir } ) ) ;
198- log . info ( log . _ ( "storage.localfilesystem.flows-file" , { path :flowsFullPath } ) ) ;
199- }
200- fs . readFile ( flowsFullPath , 'utf8' , function ( err , data ) {
201- if ( ! err ) {
202- if ( data . length === 0 ) {
203- log . warn ( log . _ ( "storage.localfilesystem.empty" ) ) ;
204- try {
205- var backupStat = fs . statSync ( flowsFileBackup ) ;
206- if ( backupStat . size === 0 ) {
207- // Empty flows, empty backup - return empty flow
208- return resolve ( [ ] ) ;
209- }
210- // Empty flows, restore backup
211- log . warn ( log . _ ( "storage.localfilesystem.restore" , { path :flowsFileBackup } ) ) ;
212- fs . copy ( flowsFileBackup , flowsFullPath , function ( backupCopyErr ) {
213- if ( backupCopyErr ) {
214- // Restore backup failed
215- log . warn ( log . _ ( "storage.localfilesystem.restore-fail" , { message :backupCopyErr . toString ( ) } ) ) ;
216- resolve ( [ ] ) ;
217- } else {
218- // Loop back in to load the restored backup
219- resolve ( localfilesystem . getFlows ( ) ) ;
220- }
221- } ) ;
222- return ;
223- } catch ( backupStatErr ) {
224- // Empty flow file, no back-up file
225- return resolve ( [ ] ) ;
226- }
227- }
228- try {
229- return resolve ( JSON . parse ( data ) ) ;
230- } catch ( parseErr ) {
231- log . warn ( log . _ ( "storage.localfilesystem.invalid" ) ) ;
232- return resolve ( [ ] ) ;
233- }
234- } else {
235- log . info ( log . _ ( "storage.localfilesystem.create" ) ) ;
236- resolve ( [ ] ) ;
237- }
238- } ) ;
239- } ) ;
241+ if ( ! initialFlowLoadComplete ) {
242+ initialFlowLoadComplete = true ;
243+ log . info ( log . _ ( "storage.localfilesystem.user-dir" , { path :settings . userDir } ) ) ;
244+ log . info ( log . _ ( "storage.localfilesystem.flows-file" , { path :flowsFullPath } ) ) ;
245+ }
246+ return readFile ( flowsFullPath , flowsFileBackup , [ ] , 'flow' ) ;
240247 } ,
241248
242249 saveFlows : function ( flows ) {
@@ -260,21 +267,7 @@ var localfilesystem = {
260267 } ,
261268
262269 getCredentials : function ( ) {
263- return when . promise ( function ( resolve ) {
264- fs . readFile ( credentialsFile , 'utf8' , function ( err , data ) {
265- if ( ! err ) {
266- resolve ( JSON . parse ( data ) ) ;
267- } else {
268- fs . readFile ( oldCredentialsFile , 'utf8' , function ( err , data ) {
269- if ( ! err ) {
270- resolve ( JSON . parse ( data ) ) ;
271- } else {
272- resolve ( { } ) ;
273- }
274- } ) ;
275- }
276- } ) ;
277- } ) ;
270+ return readFile ( credentialsFile , credentialsFileBackup , { } , 'credentials' ) ;
278271 } ,
279272
280273 saveCredentials : function ( credentials ) {
0 commit comments