projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git]
/
FS
/
FS
/
Misc
/
Geo.pm
diff --git
a/FS/FS/Misc/Geo.pm
b/FS/FS/Misc/Geo.pm
index
1e17b5f
..
aa4e55e
100644
(file)
--- a/
FS/FS/Misc/Geo.pm
+++ b/
FS/FS/Misc/Geo.pm
@@
-6,10
+6,12
@@
use vars qw( $DEBUG @EXPORT_OK $conf );
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw( GET POST );
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw( GET POST );
-use JSON;
+use HTML::TokeParser;
+use Cpanel::JSON::XS;
use URI::Escape 3.31;
use Data::Dumper;
use FS::Conf;
use URI::Escape 3.31;
use Data::Dumper;
use FS::Conf;
+use FS::Log;
use Locale::Country;
FS::UID->install_callback( sub {
use Locale::Country;
FS::UID->install_callback( sub {
@@
-299,6
+301,8
@@
sub standardize_usps {
sub standardize_uscensus {
my $self = shift;
my $location = shift;
sub standardize_uscensus {
my $self = shift;
my $location = shift;
+ my $log = FS::Log->new('FS::Misc::Geo::standardize_uscensus');
+ $log->debug(join("\n", @{$location}{'address1', 'city', 'state', 'zip'}));
eval "use Geo::USCensus::Geocoding";
die $@ if $@;
eval "use Geo::USCensus::Geocoding";
die $@ if $@;
@@
-321,6
+325,7
@@
sub standardize_uscensus {
my $result = Geo::USCensus::Geocoding->query($request);
if ( $result->is_match ) {
# unfortunately we get the address back as a single line
my $result = Geo::USCensus::Geocoding->query($request);
if ( $result->is_match ) {
# unfortunately we get the address back as a single line
+ $log->debug($result->address);
if ($result->address =~ /^(.*), (.*), ([A-Z]{2}), (\d{5}.*)$/) {
return +{
address1 => $1,
if ($result->address =~ /^(.*), (.*), ([A-Z]{2}), (\d{5}.*)$/) {
return +{
address1 => $1,
@@
-333,11
+338,15
@@
sub standardize_uscensus {
censustract => $result->censustract,
};
} else {
censustract => $result->censustract,
};
} else {
- die "
can't parse address '".$result->address."'
";
+ die "
Geocoding returned '".$result->address."', which does not seem to be a valid address.\n
";
}
}
+ } elsif ( $result->match_level eq 'Tie' ) {
+ die "Geocoding was not able to identify a unique matching address.\n";
+ } elsif ( $result->match_level ) {
+ die "Geocoding did not find a matching address.\n";
} else {
} else {
-
warn Dumper($result) if $DEBUG
;
- die $result->error_message;
+
$log->error($result->error_message)
;
+ return; # for internal errors, don't return anything
}
}
}
}