|
Revision 9905, 1.2 kB
(checked in by yappo, 5 years ago)
|
|
え、っなに? Storable::thaw しなくていいの?
|
-
Property svn:executable set to
*
|
| Line | |
|---|
| 1 | #!/usr/bin/env perl |
|---|
| 2 | package CodeRepos::CommitPing::Worker; |
|---|
| 3 | use strict; |
|---|
| 4 | use warnings; |
|---|
| 5 | use base 'TheSchwartz::Worker'; |
|---|
| 6 | |
|---|
| 7 | use LWP::UserAgent; |
|---|
| 8 | use LWP::Simple; |
|---|
| 9 | use YAML; |
|---|
| 10 | |
|---|
| 11 | my @servers = (); |
|---|
| 12 | my $last_update = 0; |
|---|
| 13 | |
|---|
| 14 | sub load_servers { |
|---|
| 15 | my $ua = LWP::UserAgent->new; |
|---|
| 16 | $ua->timeout(2); |
|---|
| 17 | |
|---|
| 18 | my $res = $ua->get('http://coderepos.org/share/wiki/commit-ping/SITEINFO'); |
|---|
| 19 | return unless $res->is_success; |
|---|
| 20 | |
|---|
| 21 | @servers = (); |
|---|
| 22 | my $html = $res->content; |
|---|
| 23 | (undef, $html) = split m{<h2 id="CommitPingServers">Commit Ping Servers</h2>}, $html; |
|---|
| 24 | while ($html =~ m!<a class="ext-link" href="(.+?)">!g) { |
|---|
| 25 | push @servers, $1; |
|---|
| 26 | } |
|---|
| 27 | } |
|---|
| 28 | |
|---|
| 29 | sub work { |
|---|
| 30 | my($class, $job) = @_; |
|---|
| 31 | |
|---|
| 32 | load_servers if $last_update + 3600 < time; |
|---|
| 33 | my $yaml = Dump($job->arg); |
|---|
| 34 | |
|---|
| 35 | my $ua = LWP::UserAgent->new; |
|---|
| 36 | $ua->timeout(2); |
|---|
| 37 | for my $url (@servers) { |
|---|
| 38 | $ua->post( $url, { yaml => $yaml } ); |
|---|
| 39 | } |
|---|
| 40 | |
|---|
| 41 | $job->completed; |
|---|
| 42 | } |
|---|
| 43 | |
|---|
| 44 | |
|---|
| 45 | package main; |
|---|
| 46 | use strict; |
|---|
| 47 | use warnings; |
|---|
| 48 | |
|---|
| 49 | use TheSchwartz; |
|---|
| 50 | |
|---|
| 51 | my $database = +{ |
|---|
| 52 | dsn => shift, |
|---|
| 53 | user => shift, |
|---|
| 54 | pass => shift, |
|---|
| 55 | }; |
|---|
| 56 | |
|---|
| 57 | my $client = TheSchwartz->new( databases => [ $database ] ); |
|---|
| 58 | $client->can_do( 'CodeRepos::CommitPing::Worker' ); |
|---|
| 59 | $client->work while 1; |
|---|