#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Tiny;
use Text::CSV_XS;
my $old_country = q{};
my $old_region = q{};
my $response = HTTP::Tiny->new->get(
'http://dev.maxmind.com/static/csv/codes/time_zone.csv');
die "Failed to download CSV!\n" unless $response->{success};
print <<'EOF';
<?php
/**
* Get time zone
* @param string $country
* @param string $region
* @return string If the timezone is not found, returns null`
*/
function get_time_zone($country, $region)
{
$timezone = null;
switch ($country) {
EOF
my $csv = Text::CSV_XS->new ({ binary => 1});
my @timezones = split /\n/, $response->{content};
shift @timezones;
for my $line (@timezones) {
$csv->parse($line) or die $csv->error_diag();
my ( $country, $region, $timezone ) = $csv->fields;
if ( $country ne $old_country ) {
if ( $old_region ne q{} ) {
print " }\n";
print " break;\n";
}
print ' case "' . $country . q(") . ":\n";
if ( $region ne q{} ) {
print " switch (\$region) {\n";
}
}
if ( $region ne q{} ) {
print ' case "' . $region . q(") . ":\n ";
}
print ' $timezone = "' . $timezone . q(") . ";\n";
if ( $region ne q{} ) {
print " break;\n";
}
else {
print " break;\n";
}
$old_country = $country;
$old_region = $region;
}
print " }\n";
print " return \$timezone;\n";
print "}\n";
|