58 lines
1.1 KiB
Perl
58 lines
1.1 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use LWP;
|
|
use LWP::UserAgent;
|
|
use HTTP::Request;
|
|
|
|
open(STEAMINF, "<", $ARGV[0]);
|
|
|
|
my $appid = 0;
|
|
my $version = "";
|
|
|
|
while (<STEAMINF>) {
|
|
if ($_ =~ /^(?:Patch)?Version\s*=\s*([0-9\.]+)/) {
|
|
$version = $1;
|
|
} elsif ($_ =~ /appID\s*=\s*([0-9]+)/) {
|
|
$appid = $1;
|
|
}
|
|
}
|
|
close STEAMINF;
|
|
|
|
if ($appid == 0 || $version eq "") {
|
|
print "Failed to parse steam.inf\n";
|
|
exit 2;
|
|
}
|
|
|
|
my $request = new HTTP::Request(
|
|
'GET',
|
|
sprintf("http://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=%d&version=%s&format=xml",
|
|
$appid,
|
|
$version
|
|
)
|
|
);
|
|
|
|
my $ua = new LWP::UserAgent;
|
|
my $response = $ua->request($request);
|
|
|
|
if (!$response->is_success())
|
|
{
|
|
printf("Bad response code: %d\n", $response->code());
|
|
exit 3;
|
|
}
|
|
|
|
$version =~ s/\.//g;
|
|
|
|
if ($response->content() =~ /<up_to_date>\s*false\s*<\/up_to_date>/) {
|
|
printf("We are outdated (v%s)\n", $version);
|
|
if ($response->content() =~ /<required_version>\s*([0-9\.]+)\s*<\/required_version>/) {
|
|
my $newversion = $1;
|
|
printf("Latest is v%s\n", $newversion);
|
|
open(my $f, ">", $ARGV[0].".new");
|
|
print $f $newversion;
|
|
}
|
|
exit 0;
|
|
} else {
|
|
printf("We are up to date (v%s)\n", $version);
|
|
exit 1;
|
|
}
|