echo track messages
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 31 Aug 2010 09:47:40 +0000 (11:47 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 31 Aug 2010 09:47:40 +0000 (11:47 +0200)
this is first semi-working !track regex client

scripts/mqr-track.pl

index 65e5888..5b7ab20 100755 (executable)
@@ -4,16 +4,29 @@ use strict;
 use AnyEvent::Redis;
 use Data::Dump qw(dump);
 
-my $sub = AnyEvent::Redis->new( host => $ENV{REDIS_HOST}, port => $ENV{REDIS_PORT} );
+use lib 'lib';
+use MQR::Redis;
 
 my $track;
+my $regex;
 
-my $sub_cv = $sub->psubscribe('*', sub {
-       my($message, $chan) = @_;
-       warn "$chan | $message\n";
-       if ( $message =~ m/^!track\s*(.+)/ ) {
-               $track->{$chan}->{$1}++;
-               warn "# track ",dump($track);
+MQR::Redis->redis->psubscribe('*', sub {
+       my($message, $channel) = @_;
+       if ( $channel =~ m/^MSG / ) {
+               if ( $message =~ m/^!track\s*(.+)/ ) {
+                       $track->{$1} = $channel;
+                       $regex = join('|', keys %$track);
+                       warn "# track regex: $regex\n";
+               } elsif ( $regex && $message =~ m/($regex)/ ) {
+                       my $found = $1;
+                       my $body = "TRACK [$found] $channel | $message";
+                       print "$body\n";
+                       my $to = $track->{$found} || die "no $1 in ",dump($track);
+                       $to =~ s/^MSG /SEND /g;
+                       MQR::Redis->publish( $to, $body );
+               }
+       } else {
+               warn "$channel | $message\n";
        }
 });