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