X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FMisc%2FGeo.pm;h=e5355cc27d2fefc47dc1ff271b370e9f0e8b80cf;hb=859d1db13fc49b46bf1707d8fa429818fd9c97a9;hp=acfeabf3b5da086eecf136c6bc87709b0f06cb3e;hpb=68c776b1b81217be620c9a4212d6652cc44452e5;p=freeside.git diff --git a/FS/FS/Misc/Geo.pm b/FS/FS/Misc/Geo.pm index acfeabf3b..e5355cc27 100644 --- a/FS/FS/Misc/Geo.pm +++ b/FS/FS/Misc/Geo.pm @@ -6,8 +6,9 @@ use vars qw( $DEBUG @EXPORT_OK ); use LWP::UserAgent; use HTTP::Request; use HTTP::Request::Common qw( GET POST ); +use HTTP::Cookies; use HTML::TokeParser; -use URI::Escape; +use URI::Escape 3.31; use Data::Dumper; $DEBUG = 0; @@ -36,18 +37,18 @@ sub get_censustract { warn Dumper($location, $year) if $DEBUG; - my $url='http://www.ffiec.gov/Geocode/default.aspx'; + my $url = 'http://www.ffiec.gov/Geocode/default.aspx'; my $return = {}; my $error = ''; - my $ua = new LWP::UserAgent; + my $ua = new LWP::UserAgent('cookie_jar' => HTTP::Cookies->new); my $res = $ua->request( GET( $url ) ); warn $res->as_string if $DEBUG > 1; - unless ($res->code eq '200') { + if (!$res->is_success) { $error = $res->message; @@ -67,7 +68,7 @@ sub get_censustract { last if $viewstate && $eventvalidation; } - unless ($viewstate && $eventvalidation ) { + if (!$viewstate or !$eventvalidation ) { $error = "either no __VIEWSTATE or __EVENTVALIDATION found"; @@ -75,14 +76,12 @@ sub get_censustract { my($zip5, $zip4) = split('-',$location->{zip}); - $year ||= '2011'; - #ugh workaround a mess at ffiec - $year = " $year" if $year ne '2011'; + $year ||= '2012'; my @ffiec_args = ( __VIEWSTATE => $viewstate, __EVENTVALIDATION => $eventvalidation, + __VIEWSTATEENCRYPTED => '', ddlbYear => $year, - ddlbYear => '2011', #' 2009', txtAddress => $location->{address1}, txtCity => $location->{city}, ddlbState => $location->{state}, @@ -117,7 +116,10 @@ sub get_censustract { $return->{lc($1)} = $p->get_trimmed_text("/span"); } - $error = "No census tract found" unless $return->{tractcode}; + unless ( $return->{tractcode} ) { + warn "$error: $content ". Dumper($return) if $DEBUG; + $error = "No census tract found"; + } $return->{tractcode} .= ' ' unless $error || $JSON::VERSION >= 2; #broken JSON 1 workaround