From 1a49e8f9f1b3dbf909e89b32a4ff4585e1799ddd Mon Sep 17 00:00:00 2001
From: Erick Hitter <services@ethitter.com>
Date: Sat, 27 Aug 2016 20:56:59 -0700
Subject: [PATCH] Utility to disconnect from lock and clear its caches

---
 server.js | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/server.js b/server.js
index e097e27..2f7753e 100755
--- a/server.js
+++ b/server.js
@@ -26,7 +26,7 @@ app.use( morgan( DEBUG ? 'dev' : 'combined' ) );
  * UTILITIES
  */
 
-// Default return arguments
+    // Default return arguments
 var ret = {
     'status': -1,
     'ret':    '',
@@ -47,7 +47,7 @@ function statusStringtoInt( status ) {
 }
 
 // Clear cached routes
-function clear_caches( lockName ) {
+function clearCaches( lockName ) {
     apicache.clear( '/api/status/' + lockName );
     apicache.clear( '/api/lock/' + lockName );
     apicache.clear( '/api/unlock/' + lockName );
@@ -55,6 +55,12 @@ function clear_caches( lockName ) {
     return true;
 }
 
+// Reset lock connection
+function disconnectAndClear( lockName ) {
+    lock.disconnect();
+    clearCaches( lockName );
+}
+
 /**
  * ROUTES
  */
@@ -64,7 +70,7 @@ app.get( '/api/status/:lock_name', cache( '15 seconds' ), function( req, res ) {
     // Parse allowed request arguments
     var lock = app.get( 'lock' + req.params.lock_name );
     if ( ! lock ) {
-        clear_caches( req.params.lock_name );
+        clearCaches( req.params.lock_name );
         res.sendStatus( 400 );
         return;
     }
@@ -84,8 +90,7 @@ app.get( '/api/status/:lock_name', cache( '15 seconds' ), function( req, res ) {
     // Perform requested action
     lock.connect().then( actionFunction ).catch( function( err ) {
         console.error( err );
-        lock.disconnect();
-        clear_caches( req.params.lock_name );
+        disconnectAndClear( req.params.lock_name );
         res.sendStatus( 500 );
     } );
 } );
@@ -103,7 +108,7 @@ app.get( '/api/:lock_action(lock|unlock)/:lock_name', cache( '5 seconds' ), func
     var lockName = req.params.lock_name,
         lock = app.get( 'lock' + lockName );
     if ( ! lock ) {
-        clear_caches( lockName );
+        clearCaches( lockName );
         res.sendStatus( 400 );
         return;
     }
@@ -130,16 +135,14 @@ app.get( '/api/:lock_action(lock|unlock)/:lock_name', cache( '5 seconds' ), func
             ret.msg    = "No change made. Lock was already '" + status + "'.";
         }
 
-        lock.disconnect();
-        clear_caches( lockName );
+        disconnectAndClear( lockName );
         res.json( ret );
     } );
 
     // Perform requested action
     lock.connect().then( actionFunction ).catch( function( err ) {
         console.error( err );
-        lock.disconnect();
-        clear_caches( lockName );
+        disconnectAndClear( lockName );
         res.sendStatus( 500 );
     } );
 } );
@@ -149,13 +152,12 @@ app.get( '/api/disconnect/:lock_name', function( req, res ) {
     // Parse allowed request arguments
     var lock = app.get( 'lock' + req.params.lock_name );
     if ( ! lock ) {
-        clear_caches( req.params.lock_name );
+        clearCaches( req.params.lock_name );
         res.sendStatus( 400 );
         return;
     }
 
-    lock.disconnect();
-    clear_caches( req.params.lock_name );
+    disconnectAndClear( req.params.lock_name );
     res.sendStatus( 204 );
 } );
 
-- 
GitLab