]> git.sesse.net Git - remoteglot/commitdiff
Support getting PGNs from local files.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 19 Nov 2018 19:19:51 +0000 (20:19 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 19 Nov 2018 19:19:51 +0000 (20:19 +0100)
remoteglot.pl

index 049cdabaafaa0f0f824bec3cb0df34f147176fe2..c6815af33932e967e671ee140b139994ef2b8080 100755 (executable)
@@ -124,7 +124,7 @@ if (defined($remoteglotconf::server)) {
        );
 }
 if (defined($remoteglotconf::target)) {
-       if ($remoteglotconf::target =~ /^https?:/) {
+       if ($remoteglotconf::target =~ /^(?:\/|https?:)/) {
                fetch_pgn($remoteglotconf::target);
        } elsif (defined($t)) {
                $t->cmd("observe $remoteglotconf::target");
@@ -248,9 +248,26 @@ sub handle_fics {
 # Starts periodic fetching of PGNs from the given URL.
 sub fetch_pgn {
        my ($url) = @_;
-       AnyEvent::HTTP::http_get($url, sub {
-               handle_pgn(@_, $url);
-       });
+       if ($url =~ m#^/#) {  # Local file.
+               eval {
+                       local $/ = undef;
+                       open my $fh, "<", $url
+                               or die "$url: $!";
+                       my $pgn = <$fh>;
+                       close $fh;
+                       handle_pgn($pgn, '', $url);
+               };
+               if ($@) {
+                       warn "$url: $@";
+                       $http_timer = AnyEvent->timer(after => 1.0, cb => sub {
+                               fetch_pgn($url);
+                       });
+               }
+       } else {
+               AnyEvent::HTTP::http_get($url, sub {
+                       handle_pgn(@_, $url);
+               });
+       }
 }
 
 my ($last_pgn_white, $last_pgn_black);