my $REQUESTS = [ { uri => "http://post.audioscrobbler.com", params => [ hs => 'true', p => '1.1', c => $CLIENT_ID, v => $CLIENT_VER, u => $USER, ], responses => [ { name => 'Successful handshake', content_pattern => qr/^UPTODATE\n([^\n]+)\n([^\n]+)\nINTERVAL (.*)/, requests => sub { my ($md5, $submit, $interval) = @_; my $hash = md5_hex(md5_hex($PASS) . $md5); print "Pausing $interval\n"; sleep $interval; return ( { uri => $submit, params => [ u => $USER, s => $hash, 'a[0]' => 'Test Artist', 't[0]' => 'Test Track', 'b[0]' => 'Test Album', 'm[0]' => '', 'l[0]' => 5*60, 'i[0]' => strftime("%Y-%m-%d %H:%M:%S", gmtime), ], responses => [ { name => 'Successful submission', content_pattern => qr/^OK\nINTERVAL (.*)/, requests => sub { print "Pausing $_[0]\n"; sleep $_[0]; return; }, }, { name => 'Failed submission', content_pattern => qr/^FAILED ([^\n]*)/, requests => sub { print "Failure: $_[0]\n"; return; }, }, { name => 'Failed authentication', content_pattern => qr/^BADAUTH/, }, ] }, ); }, }, { content_pattern => qr/^UPDATE/ }, { content_pattern => qr/^FAILED/ }, { content_pattern => qr/^BADUSER/ }, ], }, ];