use LWP::UserAgent;
use XML::Parser;
+use Commods;
+
# $commod{'Hemp'}{Buy|Sell}{'stall'}{Stall}
# $commod{'Hemp'}{Buy|Sell}{'stall'}{Price}
# $commod{'Hemp'}{Buy|Sell}{'stall'}{Qty}
}
}
-sub bs_p_tsv ($) {
- my ($bs) = @_;
+sub bs_p_tsv ($$) {
+ my ($f, $bs) = @_;
if (exists $current->{$bs}{$stall}) {
my $si= $current->{$bs}{$stall};
- printf("\t%d\t%s", $si->{Price}, $si->{Qty}) or die $!;
+ printf($f "\t%d\t%s", $si->{Price}, $si->{Qty}) or die $!;
} else {
- printf("\t\t") or die $!;
+ printf($f "\t\t") or die $!;
}
}
-sub main__tsv () {
+sub write_tsv ($) {
+ my ($f) = @_;
foreach $commod (sort keys %commod) {
$current= $commod{$commod};
my %stalls;
map { $stalls{$_}=1; } keys %{ $current->{Buy} };
map { $stalls{$_}=1; } keys %{ $current->{Sell} };
foreach $stall (sort keys %stalls) {
- printf("%s\t%s", $commod, $stall) or die $!;
- bs_p_tsv(Buy);
- bs_p_tsv(Sell);
- print("\n") or die $!;
+ printf($f "%s\t%s", $commod, $stall) or die $!;
+ bs_p_tsv($f, Buy);
+ bs_p_tsv($f, Sell);
+ print($f "\n") or die $!;
}
}
+ $f->error and die $!;
+ $f->flush or die $!;
+}
+
+sub main__tsv () {
+ write_tsv(\*STDOUT);
}
-our (%commodmap);
our ($pctb) = $ENV{'YPPSC_PCTB_PCTB'};
our ($ua)= LWP::UserAgent->new;
-sub load_commodmap() {
- undef %commodmap;
- my $c= new IO::File "#commodmap#.tsv";
- if (!$c) { $!==&ENOENT or die $!; return; }
- while (<$c>) {
- m/^(\S.*\S)\t(\d+)\n$/ or die "$_";
- $commodmap{$1}= $2;
- }
- $c->error and die $!;
- close $c;
-}
-
sub refresh_commodmap() {
die unless $pctb;
$pctb =~ s,/*$,,;
my $incommodmap=0;
my $intag='';
my %got;
- my $o= new IO::File "#commodmap#.tsv.tmp",'w' or die $!;
- undef %commodmap;
+ my $o= new IO::File "_commodmap.tsv.tmp",'w' or die $!;
+ undef %pctb_commodmap;
my $xp= new XML::Parser
(Handlers =>
my $index= $1;
$_= $got{'name'};
s/^\s+//; s/\s+$//; s/\n/ /g; s/\s+/ /;
- die "$_ ?" if exists $commodmap{$_};
- $commodmap{$_}= $index;
+ die "$_ ?" if exists $pctb_commodmap{$_};
+ $pctb_commodmap{$_}= $index;
print $o "$_\t$index\n" or die $!;
} elsif (lc $_ eq $intag) {
$got{$intag}= $cdata;
# print STDERR "[[[$content]]]\n";
$xp->parse($content);
close $o or die $!;
- rename "#commodmap#.tsv.tmp","#commodmap#.tsv" or die $!;
+ rename "_commodmap.tsv.tmp","_commodmap.tsv" or die $!;
}
our %newcommods;
my $rsync= $ENV{'YPPSC_PCTB_RSYNC'};
$rsync= 'rsync' if !defined $rsync;
- my $local= "#master-newcommods#.txt";
+ my $local= "_master-newcommods.txt";
my $src= $ENV{'YPPSC_PCTB_DICT_UPDATE'};
if ($src) {
my $remote= "$src/master-newcommods.txt";
die "$? $!" if $! or $?;
}
read_newcommods($local);
- read_newcommods('#local-newcommods#.txt');
+ read_newcommods('_local-newcommods.txt');
}
our (%stallmap, @stallmap);
my $o= '';
foreach $commod (
- sort { $commodmap{$a} <=> $commodmap{$b} }
- grep { exists $commodmap{$_} }
+ sort { $pctb_commodmap{$a} <=> $pctb_commodmap{$b} }
+ grep { exists $pctb_commodmap{$_} }
keys %commod
) {
#print STDERR "COMMOD $commod\n";
my $l= bs_p($commod,$bs,$sortmul);
next unless @$l;
#print STDERR "COMMOD $commod has ".scalar(@$l)."\n";
- $o .= writeint($commodmap{$commod});
+ $o .= writeint($pctb_commodmap{$commod});
$o .= writeint(scalar @$l);
foreach my $cs (@$l) {
$stall= $cs->{Stall};
sub genmarketdata () {
our $version= '005b';
- load_commodmap();
- my @missing= grep { !exists $commodmap{$_} } keys %commod;
+ parse_pctb_commodmap();
+ my @missing= grep { !exists $pctb_commodmap{$_} } keys %commod;
if (@missing) {
refresh_commodmap();
refresh_newcommods();
my $missing=0;
foreach $commod (sort keys %commod) {
- next if exists $commodmap{$commod};
+ next if exists $pctb_commodmap{$commod};
if (exists $newcommods{$commod}) {
printf STDERR "Ignoring new commodity \`%s'!\n", $commod;
} else {
sub save_upload_html ($$) {
my ($which, $resptxt) = @_;
- open R, ">./#upload-$which#.html" or die $!;
+ open R, ">./_upload-$which.html" or die $!;
print R $resptxt or die $!;
close R or die $!;
}
-sub main__upload () {
+sub gzip ($) {
+ my ($raw) = @_;
+ my $tf= pipethrough_prep();
+ print $tf $raw or die $!;
+ return pipethrough_run($tf,undef,'gzip','gzip');
+}
+
+sub main__uploadyaarg () {
+ my %o;
+ $o{'ocean'}= $ENV{'YPPSC_OCEAN'} or die;
+ $o{'island'}= $ENV{'YPPSC_ISLAND'} or die;
+ $o{'timestamp'}= 10;
+ get_our_version(\%o, 'client');
+
+ my $tf= pipethrough_prep();
+ write_tsv($tf);
+ my $oz= pipethrough_run_gzip($tf);
+ $o{'data'}= [ undef, 'deduped.tsv.gz',
+ Content_Type => 'application/octet-stream',
+ Content => $oz ];
+
+ my $dest= $ENV{'YPPSC_YAARG_SUBMIT'};
+
+ my $respcontent= cgipostform($ua, "$dest/commod-update-receiver", \%o);
+ $respcontent =~ m/^OK\b/ or die "$respcontent ?";
+}
+
+sub main__uploadpctb () {
my $ocean= $ENV{'YPPSC_OCEAN'}; die unless $ocean;
my $island= $ENV{'YPPSC_ISLAND'}; die unless $island;
die unless $pctb;
my $content= {
'marketdata' => [ undef, "marketdata.gz",
Content_Type => 'application/gzip',
- Content => $o
+ Content => gzip($o),
]
};
my $resptxt= $resp->content();
save_upload_html('1', $resptxt);
- open R, ">./#upload-1#.html" or die $!;
+ open R, ">./_upload-1.html" or die $!;
print R $resptxt or die $!;
close R or die $!;
save_upload_html('3', $resptxt);
print "\n" or die $!;
- system('w3m -T text/html -dump < \#upload-3#.html');
+ system('w3m -T text/html -dump < _upload-3.html');
print "\n" or die $!;
}