Geocoder\Provider\BingMaps::executeQuery PHP Method

executeQuery() private method

private executeQuery ( string $query )
$query string
    private function executeQuery($query)
    {
        if (null !== $this->getLocale()) {
            $query = sprintf('%s&culture=%s', $query, str_replace('_', '-', $this->getLocale()));
        }
        $request = $this->getMessageFactory()->createRequest('GET', $query);
        $content = (string) $this->getHttpClient()->sendRequest($request)->getBody();
        if (empty($content)) {
            throw new NoResult(sprintf('Could not execute query "%s".', $query));
        }
        $json = json_decode($content);
        if (!isset($json->resourceSets[0]) || !isset($json->resourceSets[0]->resources)) {
            throw new NoResult(sprintf('Could not execute query "%s".', $query));
        }
        $data = (array) $json->resourceSets[0]->resources;
        $results = [];
        foreach ($data as $item) {
            $coordinates = (array) $item->geocodePoints[0]->coordinates;
            $bounds = null;
            if (isset($item->bbox) && is_array($item->bbox) && count($item->bbox) > 0) {
                $bounds = ['south' => $item->bbox[0], 'west' => $item->bbox[1], 'north' => $item->bbox[2], 'east' => $item->bbox[3]];
            }
            $streetNumber = null;
            $streetName = property_exists($item->address, 'addressLine') ? (string) $item->address->addressLine : '';
            $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) {
                if (property_exists($item->address, $property)) {
                    $adminLevels[] = ['name' => $item->address->{$property}, 'level' => $i + 1];
                }
            }
            $results[] = array_merge($this->getDefaults(), ['latitude' => $coordinates[0], 'longitude' => $coordinates[1], 'bounds' => $bounds, 'streetNumber' => $streetNumber, 'streetName' => $streetName, 'locality' => empty($city) ? null : $city, 'postalCode' => empty($zipcode) ? null : $zipcode, 'adminLevels' => $adminLevels, 'country' => empty($country) ? null : $country, 'countryCode' => empty($countryCode) ? null : $countryCode]);
        }
        return $this->returnResults($results);
    }