From bc69d0bdae8252ae6ca59bc15cfc34078cfcbe9d Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 21 Nov 2010 23:18:23 +0100 Subject: [PATCH] decode json and deduplicate changes --- couchdb/couchdb-changes.pl | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/couchdb/couchdb-changes.pl b/couchdb/couchdb-changes.pl index 73fea3a..9b02241 100755 --- a/couchdb/couchdb-changes.pl +++ b/couchdb/couchdb-changes.pl @@ -7,23 +7,40 @@ use strict; use LWP::UserAgent; use Data::Dump qw(dump); +use JSON::XS; my $ua = LWP::UserAgent->new; -$ua->timeout( 60 * 60 ); +$ua->timeout( 15 ); # re-cycle request every hour $ua->env_proxy; +my $seqnum = 0; +our $last_rev = ''; + +while(1) { + + my $response = $ua->get( - 'http://localhost:5984/monitor/_changes?feed=continuous' + 'http://localhost:5984/monitor/_changes?feed=continuous;include_docs=true;since='.$seqnum , ':content_cb' => sub { my ( $data, $response, $protocol ) = @_; - warn dump( $data ); + my $json = decode_json $data; + my $rev = $json->{changes}->[0]->{rev} || warn "no rev"; + if ( $last_rev eq $rev ) { + warn "duplicate $last_rev\n"; + } else { + $last_rev = $rev; + warn "# $rev ",dump( $json ); + $seqnum = $json->{last_seq} if exists $json->{last_seq}; + } } ); if ($response->is_success) { - print $response->decoded_content; # or whatever + print "seqnum: $seqnum"; } else { die $response->status_line; } + +}#while -- 2.20.1