]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Better error notification for Geonames plugin
authorEvan Prodromou <evan@status.net>
Wed, 23 Dec 2009 17:26:43 +0000 (09:26 -0800)
committerEvan Prodromou <evan@status.net>
Wed, 23 Dec 2009 17:26:59 +0000 (09:26 -0800)
plugins/GeonamesPlugin.php

index a750f1242603bbf1857d2d28ab793cfa2747f02f..0d12c1cf7057cabac36d3071e517c67a37137570 100644 (file)
@@ -86,30 +86,36 @@ class GeonamesPlugin extends Plugin
                                                   'lang' => $language,
                                                   'type' => 'json')));
 
-        if ($result->isOk()) {
-            $rj = json_decode($result->getBody());
-            if (count($rj->geonames) > 0) {
-                $n = $rj->geonames[0];
+        if (!$result->isOk()) {
+            $this->log(LOG_WARNING, "Error code " . $result->code .
+                       " from " . $this->host . " for $name");
+            return true;
+        }
 
-                $location = new Location();
+        $rj = json_decode($result->getBody());
 
-                $location->lat              = $n->lat;
-                $location->lon              = $n->lng;
-                $location->names[$language] = $n->name;
-                $location->location_id      = $n->geonameId;
-                $location->location_ns      = self::LOCATION_NS;
+        if (count($rj->geonames) <= 0) {
+            $this->log(LOG_WARNING, "No results in response from " .
+                       $this->host . " for $name");
+            return true;
+        }
 
-                $this->setCache(array('name' => $name,
-                                     'language' => $language),
-                                $location);
+        $n = $rj->geonames[0];
 
-                // handled, don't continue processing!
-                return false;
-            }
-        }
+        $location = new Location();
+
+        $location->lat              = $n->lat;
+        $location->lon              = $n->lng;
+        $location->names[$language] = $n->name;
+        $location->location_id      = $n->geonameId;
+        $location->location_ns      = self::LOCATION_NS;
+
+        $this->setCache(array('name' => $name,
+                              'language' => $language),
+                        $location);
 
-        // Continue processing; we don't have the answer
-        return true;
+        // handled, don't continue processing!
+        return false;
     }
 
     /**
@@ -143,38 +149,46 @@ class GeonamesPlugin extends Plugin
                                             array('geonameId' => $id,
                                                   'lang' => $language)));
 
-        if ($result->isOk()) {
+        if (!$result->isOk()) {
+            $this->log(LOG_WARNING,
+                       "Error code " . $result->code .
+                       " from " . $this->host . " for ID $id");
+            return false;
+        }
 
-            $rj = json_decode($result->getBody());
+        $rj = json_decode($result->getBody());
 
-            if (count($rj->geonames) > 0) {
+        if (count($rj->geonames) <= 0) {
+            $this->log(LOG_WARNING,
+                       "No results in response from " .
+                       $this->host . " for ID $id");
+            return false;
+        }
 
-                $parts = array();
+        $parts = array();
 
-                foreach ($rj->geonames as $level) {
-                    if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
-                        $parts[] = $level->name;
-                    }
-                }
+        foreach ($rj->geonames as $level) {
+            if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+                $parts[] = $level->name;
+            }
+        }
 
-                $last = $rj->geonames[count($rj->geonames)-1];
+        $last = $rj->geonames[count($rj->geonames)-1];
 
-                if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
-                    $parts[] = $last->name;
-                }
+        if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+            $parts[] = $last->name;
+        }
 
-                $location = new Location();
+        $location = new Location();
 
-                $location->location_id      = $last->geonameId;
-                $location->location_ns      = self::LOCATION_NS;
-                $location->lat              = $last->lat;
-                $location->lon              = $last->lng;
-                $location->names[$language] = implode(', ', array_reverse($parts));
+        $location->location_id      = $last->geonameId;
+        $location->location_ns      = self::LOCATION_NS;
+        $location->lat              = $last->lat;
+        $location->lon              = $last->lng;
+        $location->names[$language] = implode(', ', array_reverse($parts));
 
-                $this->setCache(array('id' => $last->geonameId),
-                                $location);
-            }
-        }
+        $this->setCache(array('id' => $last->geonameId),
+                        $location);
 
         // We're responsible for this NAMESPACE; nobody else
         // can resolve it
@@ -217,48 +231,52 @@ class GeonamesPlugin extends Plugin
                                           'lng' => $lon,
                                           'lang' => $language)));
 
-        if ($result->isOk()) {
-
-            $rj = json_decode($result->getBody());
-
-            if (count($rj->geonames) > 0) {
+        if (!$result->isOk()) {
+            $this->log(LOG_WARNING,
+                       "Error code " . $result->code .
+                       " from " . $this->host . " for coords $lat, $lon");
+            return true;
+        }
 
-                $n = $rj->geonames[0];
+        $rj = json_decode($result->getBody());
 
-                $parts = array();
+        if (count($rj->geonames) <= 0) {
+            $this->log(LOG_WARNING,
+                       "No results in response from " .
+                       $this->host . " for coords $lat, $lon");
+            return true;
+        }
 
-                $location = new Location();
+        $n = $rj->geonames[0];
 
-                $parts[] = $n->name;
+        $parts = array();
 
-                if (!empty($n->adminName1)) {
-                    $parts[] = $n->adminName1;
-                }
+        $location = new Location();
 
-                if (!empty($n->countryName)) {
-                    $parts[] = $n->countryName;
-                }
+        $parts[] = $n->name;
 
-                $location->location_id = $n->geonameId;
-                $location->location_ns = self::LOCATION_NS;
-                $location->lat         = $lat;
-                $location->lon         = $lon;
+        if (!empty($n->adminName1)) {
+            $parts[] = $n->adminName1;
+        }
 
-                $location->names[$language] = implode(', ', $parts);
+        if (!empty($n->countryName)) {
+            $parts[] = $n->countryName;
+        }
 
-                $this->setCache(array('lat' => $lat,
-                                      'lon' => $lon),
-                                $location);
+        $location->location_id = $n->geonameId;
+        $location->location_ns = self::LOCATION_NS;
+        $location->lat         = $lat;
+        $location->lon         = $lon;
 
-                // Success! We handled it, so no further processing
+        $location->names[$language] = implode(', ', $parts);
 
-                return false;
-            }
-        }
+        $this->setCache(array('lat' => $lat,
+                              'lon' => $lon),
+                        $location);
 
-        // For some reason we don't know, so pass.
+        // Success! We handled it, so no further processing
 
-        return true;
+        return false;
     }
 
     /**
@@ -295,37 +313,44 @@ class GeonamesPlugin extends Plugin
                                             array('geonameId' => $location->location_id,
                                                   'lang' => $language)));
 
-        if ($result->isOk()) {
+        if (!$result->isOk()) {
+            $this->log(LOG_WARNING,
+                       "Error code " . $result->code .
+                       " from " . $this->host . " for ID " . $location->location_id);
+            return false;
+        }
 
-            $rj = json_decode($result->getBody());
+        $rj = json_decode($result->getBody());
 
-            if (count($rj->geonames) > 0) {
+        if (count($rj->geonames) <= 0) {
+            $this->log(LOG_WARNING,
+                       "No results " .
+                       " from " . $this->host . " for ID " . $location->location_id);
+            return false;
+        }
 
-                $parts = array();
+        $parts = array();
 
-                foreach ($rj->geonames as $level) {
-                    if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
-                        $parts[] = $level->name;
-                    }
-                }
+        foreach ($rj->geonames as $level) {
+            if (in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+                $parts[] = $level->name;
+            }
+        }
 
-                $last = $rj->geonames[count($rj->geonames)-1];
+        $last = $rj->geonames[count($rj->geonames)-1];
 
-                if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
-                    $parts[] = $last->name;
-                }
+        if (!in_array($level->fcode, array('PCLI', 'ADM1', 'PPL'))) {
+            $parts[] = $last->name;
+        }
 
-                if (count($parts)) {
-                    $name = implode(', ', array_reverse($parts));
-                    $this->setCache(array('id' => $location->location_id,
-                                          'language' => $language),
-                                    $name);
-                    return false;
-                }
-            }
+        if (count($parts)) {
+            $name = implode(', ', array_reverse($parts));
+            $this->setCache(array('id' => $location->location_id,
+                                  'language' => $language),
+                            $name);
         }
 
-        return true;
+        return false;
     }
 
     /**