. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace App\ApiClients; use Exception; use LibreNMS\Config; use LibreNMS\Interfaces\Geocoder; class MapquestApi extends BaseApi implements Geocoder { use GeocodingHelper; protected $base_uri = 'https://open.mapquestapi.com'; protected $geocoding_uri = '/geocoding/v1/address'; /** * Get latitude and longitude from geocode response * * @param array $data * @return array */ protected function parseLatLng($data) { return [ 'lat' => isset($data['results'][0]['locations'][0]['latLng']['lat']) ? $data['results'][0]['locations'][0]['latLng']['lat'] : 0, 'lng' => isset($data['results'][0]['locations'][0]['latLng']['lng']) ? $data['results'][0]['locations'][0]['latLng']['lng'] : 0, ]; } /** * Build Guzzle request option array * * @param string $address * @return array * @throws \Exception you may throw an Exception if validation fails */ protected function buildGeocodingOptions($address) { $api_key = Config::get('geoloc.api_key'); if (!$api_key) { throw new Exception("MapQuest API key missing, set geoloc.api_key"); } return [ 'query' => [ 'key' => $api_key, 'location' => $address, 'thumbMaps' => 'false', ] ]; } /** * Checks if the request was a success * * @param \Psr\Http\Message\ResponseInterface $response * @param array $data decoded response data * @return bool */ protected function checkResponse($response, $data) { return $response->getStatusCode() == 200 && $data['info']['statuscode'] == 0; } }