#!/usr/local/bin/perl -w
###########################################
# http-get-pubsub
# Mike Schilli, 2014 (m@perlmeister.com)
###########################################
package WgetPubSub;
use base 'Object::Event';
use AnyEvent::HTTP;

###########################################
sub new {
###########################################
  my $self = bless {}, $_[0];

  $self->reg_cb( "request", sub {
    my ( $c, $url ) = @_;

    http_get( $url, sub { 
      my ($body, $hdr) = @_;

      $self->event( "response", $body );
    } );


  } );

  return $self;
}

package main;
use strict;
use AnyEvent::HTTP;
use CountServer;

my $cs = CountServer->new();
$cs->start();

my $start_url = $cs->url() . "/test-1.txt";

my $wget  = WgetPubSub->new();
my $wget2 = WgetPubSub->new();
my $wget3 = WgetPubSub->new();

$wget->reg_cb( "response", sub {
  my( $c, $body ) = @_;

  print "Got: $body\n";
  $wget2->event( "request", $body );
} );

$wget2->reg_cb( "response", sub {
  my( $c, $body ) = @_;

  print "Got: $body\n";
  $wget3->event( "request", $body );
} );

$wget3->reg_cb( "response", sub {
  my( $c, $body ) = @_;

  print "Got: $body\n";
} );

$wget->event( "request", $start_url );
  
my $cv = AnyEvent->condvar();
$cv->recv();
