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;
 | 
						|
}
 |