🌞
Pyrrah/OpenWeatherMap
This bundle allows you to easily get the weather for a city or a location, via the OpenWeatherMap service.
Requirements
- Symfony 5 or 6
- API Key (APPID) from OpenWeatherMap²
- Dependencies:
Guzzle
²Please note that the free version of OpenWeatherMap restricts the number of calls per month. Please see documentation). For a large number of calls, I recommend to setting up a cache (not currently managed in this package).
Installation
- To install this bundle, run the following Composer command :
composer require pyrrah/openweathermap-bundle
- Check configuration file is correctly installed, and edit the default values with yours (Official API docs) :
# config/packages/pyrrah_openweathermap.yaml
pyrrah_open_weather_map:
api_key: your_api_key
api_url: https://api.openweathermap.org/data/2.5/
units: metric
language: en
Routing (optional)
If you don't want to expose the OpenWeatherMap API via your application, you can skip this section.
Configuration
PyrrahOpenWeatherMapBundle:
resource: "@PyrrahOpenWeatherMapBundle/Controller/"
type: annotation
prefix: /openweathermap/api
This exposes the OpenWeatherMap API via /openweathermap/api. This means that instead of sending a request to http://api.openweathermap.org/ you can now send an unsigned request to /openweathermap/api/*. Make sure you secure this area if you don't want others to be able to post on your behalf.
Usage
After installation and configuration, the service can be directly referenced from within your controllers.
<?php
use Pyrrah\OpenWeatherMapBundle\Services\Client;
/** @var Client $client */
$client = $this->get('pyrrah.openweathermap.client');
// Retrieve the current weather for Paris, FR
$weather = $client->getWeather('Paris,fr');
// Or retrieve the weather using the generic query method
$response = $client->query('weather', array('q' => 'Paris,fr'));
$weather = json_decode($response->getContent());
Credits
License
This bundle is under the MIT license. For the full copyright and license information please view the License File that was distributed with this source code.