From 38e21726bb9e8f6e0391e50d82e79821fd6c459f Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 18 Nov 2013 17:18:34 +0100 Subject: add a hook for reacting on user deletion. --- lib/tapicero/couch_changes.rb | 10 +++++++++- lib/tapicero_daemon.rb | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/tapicero/couch_changes.rb b/lib/tapicero/couch_changes.rb index 376eb11..35d4b1a 100644 --- a/lib/tapicero/couch_changes.rb +++ b/lib/tapicero/couch_changes.rb @@ -20,6 +20,14 @@ module Tapicero end end + def deleted(hash = {}, &block) + if block_given? + @deleted = block + else + @deleted && @deleted.call(hash) + end + end + def listen Tapicero.logger.info "listening..." Tapicero.logger.debug "Starting at sequence #{since}" @@ -36,7 +44,7 @@ module Tapicero def callbacks(hash) #changed callback - return if hash["deleted"] # deleted_callback + return deleted(hash) if hash["deleted"] return unless changes = hash["changes"] created(hash) if changes[0]["rev"].start_with?('1-') store_seq(hash["seq"]) diff --git a/lib/tapicero_daemon.rb b/lib/tapicero_daemon.rb index e38a4ad..bb1a818 100644 --- a/lib/tapicero_daemon.rb +++ b/lib/tapicero_daemon.rb @@ -21,5 +21,9 @@ module Tapicero db.secure(Config.security) end + users.deleted do |hash| + Tapicero.logger.debug "Deleted user " + hash.to_json + end + users.listen end -- cgit v1.2.3 From bff519f9842e43ad7a5b5e4836d9b73ceeff4681 Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 18 Nov 2013 17:20:28 +0100 Subject: fix issues with storing and retrieving the sequence .to_i makes retrieving the sequence more robust - in particular if the file content was not meaningful. store_seq should also be called if it was a destroy action. --- lib/tapicero/couch_changes.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/tapicero/couch_changes.rb b/lib/tapicero/couch_changes.rb index 35d4b1a..64ae123 100644 --- a/lib/tapicero/couch_changes.rb +++ b/lib/tapicero/couch_changes.rb @@ -33,6 +33,7 @@ module Tapicero Tapicero.logger.debug "Starting at sequence #{since}" db.changes :feed => :continuous, :since => since, :heartbeat => 1000 do |hash| callbacks(hash) + store_seq(hash["seq"]) end end @@ -44,10 +45,9 @@ module Tapicero def callbacks(hash) #changed callback - return deleted(hash) if hash["deleted"] return unless changes = hash["changes"] + return deleted(hash) if hash["deleted"] created(hash) if changes[0]["rev"].start_with?('1-') - store_seq(hash["seq"]) #updated callback end @@ -57,7 +57,8 @@ module Tapicero unless File.writable?(seq_filename) raise StandardError.new("Can't access sequence file") end - @since = File.read(seq_filename) + @since = File.read(seq_filename).to_i + puts @since rescue Errno::ENOENT => e Tapicero.logger.warn "No sequence file found. Starting from scratch" end -- cgit v1.2.3 From 0cc941bb4e46489fb6eb9f8f3282ee3a6c046449 Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 18 Nov 2013 17:20:51 +0100 Subject: delete user db's on user deletion. --- lib/tapicero/user_database.rb | 5 +++++ lib/tapicero_daemon.rb | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/tapicero/user_database.rb b/lib/tapicero/user_database.rb index 84ed300..ec2694a 100644 --- a/lib/tapicero/user_database.rb +++ b/lib/tapicero/user_database.rb @@ -24,6 +24,11 @@ module Tapicero CouchRest.put security_url, security end + def destroy + db = CouchRest.new(host).database(name) + db.delete! if db + end + protected def secured? diff --git a/lib/tapicero_daemon.rb b/lib/tapicero_daemon.rb index bb1a818..3a26296 100644 --- a/lib/tapicero_daemon.rb +++ b/lib/tapicero_daemon.rb @@ -22,7 +22,9 @@ module Tapicero end users.deleted do |hash| - Tapicero.logger.debug "Deleted user " + hash.to_json + puts "Deleted user " + hash['id'] + db = UserDatabase.new(Config.couch_host, Config.db_prefix + hash['id']) + db.destroy end users.listen -- cgit v1.2.3 From 8e1f23521eac0586ec13bdf502bd37a09f53a4a0 Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 18 Nov 2013 17:23:40 +0100 Subject: use our logger - not just puts --- lib/tapicero/couch_changes.rb | 2 +- lib/tapicero_daemon.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/tapicero/couch_changes.rb b/lib/tapicero/couch_changes.rb index 64ae123..b45d54a 100644 --- a/lib/tapicero/couch_changes.rb +++ b/lib/tapicero/couch_changes.rb @@ -58,7 +58,7 @@ module Tapicero raise StandardError.new("Can't access sequence file") end @since = File.read(seq_filename).to_i - puts @since + Tapicero.logger.debug "Found sequence: #{@since}" rescue Errno::ENOENT => e Tapicero.logger.warn "No sequence file found. Starting from scratch" end diff --git a/lib/tapicero_daemon.rb b/lib/tapicero_daemon.rb index 3a26296..9223acb 100644 --- a/lib/tapicero_daemon.rb +++ b/lib/tapicero_daemon.rb @@ -22,7 +22,7 @@ module Tapicero end users.deleted do |hash| - puts "Deleted user " + hash['id'] + Tapicero.logger.debug "Deleted user " + hash['id'] db = UserDatabase.new(Config.couch_host, Config.db_prefix + hash['id']) db.destroy end -- cgit v1.2.3