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