chiark / gitweb /
WIP commod-update-receiver; before make parse_parser into library
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 19 Jul 2009 19:18:32 +0000 (20:18 +0100)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 19 Jul 2009 19:18:32 +0000 (20:18 +0100)
pctb/commod-update-receiver [new file with mode: 0755]
pctb/database-info-fetch

diff --git a/pctb/commod-update-receiver b/pctb/commod-update-receiver
new file mode 100755 (executable)
index 0000000..531ff1a
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/perl -w
+#
+# This script is invoked when the YPP SC PCTB client uploads to
+# the chiark database.
+
+# This is part of ypp-sc-tools, a set of third-party tools for assisting
+# players of Yohoho Puzzle Pirates.
+#
+# Copyright (C) 2009 Ian Jackson <ijackson@chiark.greenend.org.uk>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Yohoho and Puzzle Pirates are probably trademarks of Three Rings and
+# are used without permission.  This program is not endorsed or
+# sponsored by Three Rings.
+
+
+# Uploads contain:
+#  ocean                       canonical mixed case
+#  island                      canonical mixed case
+#  clientname                  "ypp-sc-tools"
+#  clientversion               2.1-g2e06a26  [from git-describe --tags HEAD]
+#  clientfixes                 "lastpage"  [space separated list]
+#  deduped.tsv.gz              output of ypp-commodities --tsv
+
+use strict (qw(vars));
+use POSIX;
+
+$CGI::POST_MAX= 3*1024*1024;
+$CGI::DISABLE_UPLOADS= 1;
+
+use CGI qw/:standard -private_tempfiles/;
+
+setlocale(LC_CTYPE, "en_GB.UTF-8");
+
index 8b464a1..0752ae0 100755 (executable)
 use strict (qw(vars));
 use LWP::UserAgent;
 use JSON;
 use strict (qw(vars));
 use LWP::UserAgent;
 use JSON;
-use Data::Dumper;
+#use Data::Dumper;
 use IO::File;
 
 use IO::File;
 
-@ARGV==1 or die "You probably don't want to run this program directly.\n";
+@ARGV>=1 or die "You probably don't want to run this program directly.\n";
 our ($which) = shift @ARGV;
 
 $which =~ s/\W//g;
 
 our ($which) = shift @ARGV;
 
 $which =~ s/\W//g;
 
-our ($pctb) = $ENV{'YPPSC_PCTB_PCTB'};  die unless $pctb;
+our ($pctb) = $ENV{'YPPSC_PCTB_PCTB'};
 our ($ua)= LWP::UserAgent->new;
 our $jsonresp;
 
 our ($ua)= LWP::UserAgent->new;
 our $jsonresp;
 
@@ -83,7 +83,7 @@ BEGIN {
        close $mm or die $!;
 
 #print Dumper(\%oceans);
        close $mm or die $!;
 
 #print Dumper(\%oceans);
-print Dumper(\@rawcm);
+#print Dumper(\@rawcm);
        
        %commods= ();
        my $ca;
        
        %commods= ();
        my $ca;
@@ -147,6 +147,7 @@ sub json_convert_shim ($) {
 
 sub get_arches_islands_pctb ($) {
     my ($ocean)= @_;
 
 sub get_arches_islands_pctb ($) {
     my ($ocean)= @_;
+    die unless $pctb;
     my $url= "$pctb/islands.php?oceanName=".uc $ocean;
     my $resp= $ua->get($url);
     die $resp->status_line unless $resp->is_success;
     my $url= "$pctb/islands.php?oceanName=".uc $ocean;
     my $resp= $ua->get($url);
     die $resp->status_line unless $resp->is_success;
@@ -256,6 +257,28 @@ sub main__island () {
                });
 }
 
                });
 }
 
+sub main__allowablecommods ($$) {
+    my ($ocean,$island) = @_;
+    parse_masters();
+    my $arches= $oceans{$ocean};
+    if (!$arches) { print "unknown ocean\n"; exit 1; }
+    my $found= 0;
+    foreach my $islands (values %$arches) {
+       my $sources= $islands->{$island};
+       next unless $sources;
+       die if $found;
+       $found= $sources;
+    }
+    if (!$found) { print "unknown island\n"; exit 1; }
+
+    print "\n";
+    foreach my $commod (sort keys %commods) {
+       print "$commod\n";
+    }
+    STDOUT->error and die $!;
+    close STDOUT or die $!;
+}
+
 sub main__sunshinewidget () {
     print <<END
 Land {On land} {
 sub main__sunshinewidget () {
     print <<END
 Land {On land} {
@@ -276,4 +299,4 @@ END
     or die $!;
 }
 
     or die $!;
 }
 
-&{"main__$which"}();
+&{"main__$which"}(@ARGV);