diff --git a/src/Geocoder/Provider/BingMaps.php b/src/Geocoder/Provider/BingMaps.php index 74a57c59e..bcd2ee54e 100644 --- a/src/Geocoder/Provider/BingMaps.php +++ b/src/Geocoder/Provider/BingMaps.php @@ -25,12 +25,12 @@ class BingMaps extends AbstractHttpProvider implements LocaleAwareProvider /** * @var string */ - const GEOCODE_ENDPOINT_URL = 'http://dev.virtualearth.net/REST/v1/Locations/?maxResults=%d&q=%s&key=%s'; + const GEOCODE_ENDPOINT_URL = 'http://dev.virtualearth.net/REST/v1/Locations/?maxResults=%d&q=%s&key=%s&incl=ciso2'; /** * @var string */ - const REVERSE_ENDPOINT_URL = 'http://dev.virtualearth.net/REST/v1/Locations/%F,%F?key=%s'; + const REVERSE_ENDPOINT_URL = 'http://dev.virtualearth.net/REST/v1/Locations/%F,%F?key=%s&incl=ciso2'; /** * @var string @@ -133,7 +133,8 @@ private function executeQuery($query) $zipcode = property_exists($item->address, 'postalCode') ? (string) $item->address->postalCode : ''; $city = property_exists($item->address, 'locality') ? (string) $item->address->locality: ''; $country = property_exists($item->address, 'countryRegion') ? (string) $item->address->countryRegion: ''; - + $countryCode = property_exists($item->address, 'countryRegionIso2') ? (string) $item->address->countryRegionIso2: ''; + $adminLevels = []; foreach (['adminDistrict', 'adminDistrict2'] as $i => $property) { @@ -152,6 +153,7 @@ private function executeQuery($query) 'postalCode' => empty($zipcode) ? null : $zipcode, 'adminLevels' => $adminLevels, 'country' => empty($country) ? null : $country, + 'countryCode' => empty($countryCode) ? null : $countryCode, ]); } diff --git a/tests/Geocoder/Tests/Provider/BingMapsTest.php b/tests/Geocoder/Tests/Provider/BingMapsTest.php index 9f0b3e2c6..ae0054d09 100644 --- a/tests/Geocoder/Tests/Provider/BingMapsTest.php +++ b/tests/Geocoder/Tests/Provider/BingMapsTest.php @@ -24,7 +24,7 @@ public function testGeocodeWithNullApiKey() /** * @expectedException \Geocoder\Exception\NoResult - * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=foobar&key=api_key". + * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=foobar&key=api_key&incl=ciso2". */ public function testGeocodeWithInvalidData() { @@ -34,7 +34,7 @@ public function testGeocodeWithInvalidData() /** * @expectedException \Geocoder\Exception\NoResult - * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=&key=api_key". + * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=&key=api_key&incl=ciso2". */ public function testGeocodeWithNull() { @@ -44,7 +44,7 @@ public function testGeocodeWithNull() /** * @expectedException \Geocoder\Exception\NoResult - * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=&key=api_key". + * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=&key=api_key&incl=ciso2". */ public function testGeocodeWithEmpty() { @@ -74,7 +74,7 @@ public function testGeocodeWithLocalhostIPv6() /** * @expectedException \Geocoder\Exception\NoResult - * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=10+avenue+Gambetta%2C+Paris%2C+France&key=api_key". + * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/?maxResults=5&q=10+avenue+Gambetta%2C+Paris%2C+France&key=api_key&incl=ciso2". */ public function testGeocodeWithAddressGetsNullContent() { @@ -85,7 +85,7 @@ public function testGeocodeWithAddressGetsNullContent() public function testGeocodeReturnsMultipleResults() { $json = <<getMockAdapterReturns($json), 'api_key', 'fr_FR'); @@ -112,8 +112,8 @@ public function testGeocodeReturnsMultipleResults() $this->assertEquals('Paris', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('IdF', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('France', $result->getCountry()->getName()); + $this->assertEquals('FR', $result->getCountry()->getCode()); - $this->assertNull($result->getCountry()->getCode()); $this->assertNull($result->getTimezone()); /** @var \Geocoder\Model\Address $result */ @@ -134,6 +134,7 @@ public function testGeocodeReturnsMultipleResults() $this->assertEquals('Hauts-de-Seine', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('IdF', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('France', $result->getCountry()->getName()); + $this->assertEquals('FR', $result->getCountry()->getCode()); /** @var \Geocoder\Model\Address $result */ $result = $results->get(2); @@ -153,12 +154,13 @@ public function testGeocodeReturnsMultipleResults() $this->assertEquals('Val-De-Marne', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('IdF', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('France', $result->getCountry()->getName()); + $this->assertEquals('FR', $result->getCountry()->getCode()); } public function testReverseReturnsSingleResult() { $json = <<getMockAdapterReturns($json), 'api_key'); @@ -185,8 +187,8 @@ public function testReverseReturnsSingleResult() $this->assertEquals('Paris', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('IdF', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('France', $result->getCountry()->getName()); + $this->assertEquals('FR', $result->getCountry()->getCode()); - $this->assertNull($result->getCountry()->getCode()); $this->assertNull($result->getTimezone()); } @@ -220,10 +222,10 @@ public function testGeocodeWithRealAddressReturnsSingleResults() $this->assertEquals('Paris', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('IdF', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('France', $result->getCountry()->getName()); + $this->assertEquals('FR', $result->getCountry()->getCode()); $this->assertNull($result->getAdminLevels()->get(2)->getCode()); $this->assertNull($result->getAdminLevels()->get(1)->getCode()); - $this->assertNull($result->getCountry()->getCode()); $this->assertNull($result->getTimezone()); } @@ -258,6 +260,7 @@ public function testGeocodeWithRealAddressReturnsMultipleResults() $this->assertEquals('AT', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('Piem.', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('Italie', $result->getCountry()->getName()); + $this->assertEquals('IT', $result->getCountry()->getCode()); /** @var \Geocoder\Model\Address $result */ $result = $results->get(1); @@ -277,6 +280,7 @@ public function testGeocodeWithRealAddressReturnsMultipleResults() $this->assertEquals('TN', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('Tr.A.A.', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('Italie', $result->getCountry()->getName()); + $this->assertEquals('IT', $result->getCountry()->getCode()); /** @var \Geocoder\Model\Address $result */ $result = $results->get(2); @@ -296,6 +300,7 @@ public function testGeocodeWithRealAddressReturnsMultipleResults() $this->assertEquals('PC', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('Em.Rom.', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('Italie', $result->getCountry()->getName()); + $this->assertEquals('IT', $result->getCountry()->getCode()); /** @var \Geocoder\Model\Address $result */ $result = $results->get(3); @@ -315,6 +320,7 @@ public function testGeocodeWithRealAddressReturnsMultipleResults() $this->assertEquals('PO', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('Tosc.', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('Italie', $result->getCountry()->getName()); + $this->assertEquals('IT', $result->getCountry()->getCode()); /** @var \Geocoder\Model\Address $result */ $result = $results->get(4); @@ -334,11 +340,12 @@ public function testGeocodeWithRealAddressReturnsMultipleResults() $this->assertEquals('AQ', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('Abr.', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('Italie', $result->getCountry()->getName()); + $this->assertEquals('IT', $result->getCountry()->getCode()); } /** * @expectedException \Geocoder\Exception\NoResult - * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/1.000000,2.000000?key=api_key". + * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/1.000000,2.000000?key=api_key&incl=ciso2". */ public function testReverse() { @@ -348,7 +355,7 @@ public function testReverse() /** * @expectedException \Geocoder\Exception\NoResult - * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/48.863216,2.388772?key=api_key". + * @expectedExceptionMessage Could not execute query "http://dev.virtualearth.net/REST/v1/Locations/48.863216,2.388772?key=api_key&incl=ciso2". */ public function testReverseWithCoordinatesContentReturnNull() { @@ -386,8 +393,8 @@ public function testReverseWithRealCoordinatesReturnsSingleResult() $this->assertEquals('Paris', $result->getAdminLevels()->get(2)->getName()); $this->assertEquals('IdF', $result->getAdminLevels()->get(1)->getName()); $this->assertEquals('France', $result->getCountry()->getName()); + $this->assertEquals('FR', $result->getCountry()->getCode()); - $this->assertNull($result->getCountry()->getCode()); $this->assertNull($result->getTimezone()); }