tools/gdc-psyfork/example-scripts/updatecheck.pl
author Drifter <rgr_02@comcast.net>
Sat May 26 18:31:23 2012 -0400 (2012-05-26)
changeset 3519 a116c415c73e
parent 3514 377c7da70d7c
permissions -rw-r--r--
Added support for CS:GO to cstrike extension (bug 5299, r=asherkin).
skamonkey@3514
     1
#!/usr/bin/perl
skamonkey@3514
     2
skamonkey@3514
     3
use LWP;
skamonkey@3514
     4
use LWP::UserAgent;
skamonkey@3514
     5
use HTTP::Request;
skamonkey@3514
     6
skamonkey@3514
     7
open(STEAMINF, "<", $ARGV[0]);
skamonkey@3514
     8
skamonkey@3514
     9
my $appid = 0;
skamonkey@3514
    10
my $version = "";
skamonkey@3514
    11
skamonkey@3514
    12
while (<STEAMINF>) {
skamonkey@3514
    13
	if ($_ =~ /^(?:Patch)?Version\s*=\s*([0-9\.]+)/) {
skamonkey@3514
    14
		$version = $1;
skamonkey@3514
    15
	} elsif ($_ =~ /appID\s*=\s*([0-9]+)/) {
skamonkey@3514
    16
		$appid = $1;
skamonkey@3514
    17
	}
skamonkey@3514
    18
}
skamonkey@3514
    19
close STEAMINF;
skamonkey@3514
    20
skamonkey@3514
    21
if ($appid == 0 || $version eq "") {
skamonkey@3514
    22
	print "Failed to parse steam.inf\n";
skamonkey@3514
    23
	exit 2;
skamonkey@3514
    24
}
skamonkey@3514
    25
 
skamonkey@3514
    26
my $request = new HTTP::Request(
skamonkey@3514
    27
	'GET',
skamonkey@3514
    28
	sprintf("http://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=%d&version=%s&format=xml",
skamonkey@3514
    29
		$appid,
skamonkey@3514
    30
		$version
skamonkey@3514
    31
		)
skamonkey@3514
    32
	);
skamonkey@3514
    33
skamonkey@3514
    34
my $ua = new LWP::UserAgent;
skamonkey@3514
    35
my $response = $ua->request($request);
skamonkey@3514
    36
skamonkey@3514
    37
if (!$response->is_success())
skamonkey@3514
    38
{
skamonkey@3514
    39
	printf("Bad response code: %d\n", $response->code());
skamonkey@3514
    40
	exit 3;
skamonkey@3514
    41
}
skamonkey@3514
    42
skamonkey@3514
    43
$version =~ s/\.//g;
skamonkey@3514
    44
skamonkey@3514
    45
if ($response->content() =~ /<up_to_date>\s*false\s*<\/up_to_date>/) {
skamonkey@3514
    46
	printf("We are outdated (v%s)\n", $version);
skamonkey@3514
    47
	if ($response->content() =~ /<required_version>\s*([0-9\.]+)\s*<\/required_version>/) {
skamonkey@3514
    48
		my $newversion = $1;
skamonkey@3514
    49
		printf("Latest is v%s\n", $newversion);
skamonkey@3514
    50
		open(my $f, ">", $ARGV[0].".new");
skamonkey@3514
    51
		print $f $newversion;
skamonkey@3514
    52
	}
skamonkey@3514
    53
	exit 0;
skamonkey@3514
    54
} else {
skamonkey@3514
    55
	printf("We are up to date (v%s)\n", $version);
skamonkey@3514
    56
	exit 1;
skamonkey@3514
    57
}