aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/Geocode.pm6
-rw-r--r--perllib/FixMyStreet/Geocode/OSM.pm2
2 files changed, 6 insertions, 2 deletions
diff --git a/perllib/FixMyStreet/Geocode.pm b/perllib/FixMyStreet/Geocode.pm
index dd1adfe71..aeac0ab6d 100644
--- a/perllib/FixMyStreet/Geocode.pm
+++ b/perllib/FixMyStreet/Geocode.pm
@@ -79,8 +79,12 @@ sub cache {
$url .= '&' . $args if $args;
$ua->timeout(15);
$js = LWP::Simple::get($url);
- $cache_dir->mkpath;
+ # The returned data is not correctly decoded if the content type is
+ # e.g. application/json. Which all of our geocoders return.
+ # uncoverable branch false
+ $js = decode_utf8($js) if !utf8::is_utf8($js);
if ($js && (!$re || $js !~ $re) && !FixMyStreet->config('STAGING_SITE')) {
+ $cache_dir->mkpath; # uncoverable statement
# uncoverable statement
$cache_file->spew_utf8($js);
}
diff --git a/perllib/FixMyStreet/Geocode/OSM.pm b/perllib/FixMyStreet/Geocode/OSM.pm
index f165963d7..020be3c2a 100644
--- a/perllib/FixMyStreet/Geocode/OSM.pm
+++ b/perllib/FixMyStreet/Geocode/OSM.pm
@@ -41,7 +41,7 @@ sub string {
if $params->{bounds};
$query_params{countrycodes} = $params->{country}
if $params->{country};
- $url .= join('&', map { "$_=$query_params{$_}" } keys %query_params);
+ $url .= join('&', map { "$_=$query_params{$_}" } sort keys %query_params);
my $js = FixMyStreet::Geocode::cache('osm', $url);
if (!$js) {