+++ /dev/null
-{
- "require": {
- "cmfcmf/openweathermap-php-api": "~2.0"
- }
-}
+++ /dev/null
-<?php
-
-// autoload.php @generated by Composer
-
-require_once __DIR__ . '/composer' . '/autoload_real.php';
-
-return ComposerAutoloaderInit6bf0e42f34a65c53928f3dc22e5b93d3::getLoader();
+++ /dev/null
-language: php
-sudo: false
-
-php:
- - 5.3
- - 5.4
- - 5.5
- - 5.6
- - hhvm
- - nightly
-
-matrix:
- fast_finish: true
- allow_failures:
- - php: hhvm
- - php: nightly
-
-install:
- - composer install --dev
-
-
-script: phpunit
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf;
-
-use Cmfcmf\OpenWeatherMap\AbstractCache;
-use Cmfcmf\OpenWeatherMap\CurrentWeather;
-use Cmfcmf\OpenWeatherMap\Exception as OWMException;
-use Cmfcmf\OpenWeatherMap\Fetcher\CurlFetcher;
-use Cmfcmf\OpenWeatherMap\Fetcher\FetcherInterface;
-use Cmfcmf\OpenWeatherMap\Fetcher\FileGetContentsFetcher;
-use Cmfcmf\OpenWeatherMap\WeatherForecast;
-use Cmfcmf\OpenWeatherMap\WeatherHistory;
-
-/**
- * Main class for the OpenWeatherMap-PHP-API. Only use this class.
- *
- * @api
- */
-class OpenWeatherMap
-{
- /**
- * @var string $weatherUrl The basic api url to fetch weather data from.
- */
- private $weatherUrl = "http://api.openweathermap.org/data/2.5/weather?";
-
- /**
- * @var string $url The basic api url to fetch weekly forecast data from.
- */
- private $weatherHourlyForecastUrl = "http://api.openweathermap.org/data/2.5/forecast?";
-
- /**
- * @var string $url The basic api url to fetch daily forecast data from.
- */
- private $weatherDailyForecastUrl = "http://api.openweathermap.org/data/2.5/forecast/daily?";
-
- /**
- * @var string $url The basic api url to fetch history weather data from.
- */
- private $weatherHistoryUrl = "http://api.openweathermap.org/data/2.5/history/city?";
-
- /**
- * The copyright notice. This is no official text, this hint was created regarding to http://openweathermap.org/copyright.
- *
- * @var string $copyright
- */
- const COPYRIGHT = "Weather data from <a href=\"http://www.openweathermap.org\">OpenWeatherMap.org</a>";
-
- /**
- * @var \Cmfcmf\OpenWeatherMap\AbstractCache|bool $cacheClass The cache class.
- */
- private $cacheClass = false;
-
- /**
- * @var int
- */
- private $seconds;
-
- /**
- * @var FetcherInterface The url fetcher.
- */
- private $fetcher;
-
- /**
- * Constructs the OpenWeatherMap object.
- *
- * @param null|FetcherInterface $fetcher The interface to fetch the data from OpenWeatherMap. Defaults to
- * CurlFetcher() if cURL is available. Otherwise defaults to
- * FileGetContentsFetcher() using 'file_get_contents()'.
- * @param bool|string $cacheClass If set to false, caching is disabled. Otherwise this must be a class
- * extending AbstractCache. Defaults to false.
- * @param int $seconds How long weather data shall be cached. Default 10 minutes.
- *
- * @throws \Exception If $cache is neither false nor a valid callable extending Cmfcmf\OpenWeatherMap\Util\Cache.
- * @api
- */
- public function __construct($fetcher = null, $cacheClass = false, $seconds = 600)
- {
- if ($cacheClass !== false && !($cacheClass instanceof AbstractCache)) {
- throw new \Exception("The cache class must implement the FetcherInterface!");
- }
- if (!is_numeric($seconds)) {
- throw new \Exception("\$seconds must be numeric.");
- }
- if (!isset($fetcher)) {
- $fetcher = (function_exists('curl_version')) ? new CurlFetcher() : new FileGetContentsFetcher();
- }
- if ($seconds == 0) {
- $cacheClass = false;
- }
-
- $this->cacheClass = $cacheClass;
- $this->seconds = $seconds;
- $this->fetcher = $fetcher;
- }
-
- /**
- * Returns the current weather at the place you specified as an object.
- *
- * @param array|int|string $query The place to get weather information for. For possible values see below.
- * @param string $units Can be either 'metric' or 'imperial' (default). This affects almost all units returned.
- * @param string $lang The language to use for descriptions, default is 'en'. For possible values see below.
- * @param string $appid Your app id, default ''. See http://openweathermap.org/appid for more details.
- *
- * @throws OpenWeatherMap\Exception If OpenWeatherMap returns an error.
- * @throws \InvalidArgumentException If an argument error occurs.
- *
- * @return CurrentWeather The weather object.
- *
- * There are three ways to specify the place to get weather information for:
- * - Use the city name: $query must be a string containing the city name.
- * - Use the city id: $query must be an integer containing the city id.
- * - Use the coordinates: $query must be an associative array containing the 'lat' and 'lon' values.
- *
- * Available languages are (as of 17. July 2013):
- * - English - en
- * - Russian - ru
- * - Italian - it
- * - Spanish - sp
- * - Ukrainian - ua
- * - German - de
- * - Portuguese - pt
- * - Romanian - ro
- * - Polish - pl
- * - Finnish - fi
- * - Dutch - nl
- * - French - fr
- * - Bulgarian - bg
- * - Swedish - se
- * - Chinese Traditional - zh_tw
- * - Chinese Simplified - zh_cn
- * - Turkish - tr
- *
- * @api
- */
- public function getWeather($query, $units = 'imperial', $lang = 'en', $appid = '')
- {
- // Disable default error handling of SimpleXML (Do not throw E_WARNINGs).
- libxml_use_internal_errors(true);
- libxml_clear_errors();
-
- $answer = $this->getRawWeatherData($query, $units, $lang, $appid, 'xml');
-
- try {
- $xml = new \SimpleXMLElement($answer);
- } catch (\Exception $e) {
- // Invalid xml format. This happens in case OpenWeatherMap returns an error.
- // OpenWeatherMap always uses json for errors, even if one specifies xml as format.
- $error = json_decode($answer, true);
- if (isset($error['message'])) {
- throw new OWMException($error['message'], $error['cod']);
- } else {
- throw new OWMException('Unknown fatal error: OpenWeatherMap returned the following json object: ' . $answer);
- }
- }
-
- return new CurrentWeather($xml, $units);
- }
-
- /**
- * Returns the current weather at the place you specified as an object.
- *
- * @param array|int|string $query The place to get weather information for. For possible values see below.
- * @param string $units Can be either 'metric' or 'imperial' (default). This affects almost all units returned.
- * @param string $lang The language to use for descriptions, default is 'en'. For possible values see below.
- * @param string $appid Your app id, default ''. See http://openweathermap.org/appid for more details.
- * @param int $days For how much days you want to get a forecast. Default 1, maximum: 16.
- *
- * @throws OpenWeatherMap\Exception If OpenWeatherMap returns an error.
- * @throws \InvalidArgumentException If an argument error occurs.
- *
- * @return WeatherForecast The WeatherForecast object.
- *
- * There are three ways to specify the place to get weather information for:
- * - Use the city name: $query must be a string containing the city name.
- * - Use the city id: $query must be an integer containing the city id.
- * - Use the coordinates: $query must be an associative array containing the 'lat' and 'lon' values.
- *
- * Available languages are (as of 17. July 2013):
- * - English - en
- * - Russian - ru
- * - Italian - it
- * - Spanish - sp
- * - Ukrainian - ua
- * - German - de
- * - Portuguese - pt
- * - Romanian - ro
- * - Polish - pl
- * - Finnish - fi
- * - Dutch - nl
- * - French - fr
- * - Bulgarian - bg
- * - Swedish - se
- * - Chinese Traditional - zh_tw
- * - Chinese Simplified - zh_cn
- * - Turkish - tr
- *
- * @api
- */
- public function getWeatherForecast($query, $units = 'imperial', $lang = 'en', $appid = '', $days = 1)
- {
- // Disable default error handling of SimpleXML (Do not throw E_WARNINGs).
- libxml_use_internal_errors(true);
- libxml_clear_errors();
-
- if ($days <= 5) {
- $answer = $this->getRawHourlyForecastData($query, $units, $lang, $appid, 'xml');
- } else if ($days <= 16) {
- $answer = $this->getRawDailyForecastData($query, $units, $lang, $appid, 'xml', $days);
- } else {
- throw new \InvalidArgumentException('Error: forecasts are only available for the next 16 days. $days must be lower than 17.');
- }
-
- try {
- $xml = new \SimpleXMLElement($answer);
- } catch (\Exception $e) {
- // Invalid xml format. This happens in case OpenWeatherMap returns an error.
- // OpenWeatherMap always uses json for errors, even if one specifies xml as format.
- $error = json_decode($answer, true);
- if (isset($error['message'])) {
- throw new OWMException($error['message'], $error['cod']);
- } else {
- throw new OWMException('Unknown fatal error: OpenWeatherMap returned the following json object: ' . $answer);
- }
- }
-
- return new WeatherForecast($xml, $units, $days);
- }
-
- /**
- * Returns the weather history for the place you specified as an object.
- *
- * @param array|int|string $query The place to get weather information for. For possible values see below.
- * @param \DateTime $start
- * @param int $endOrCount
- * @param string $type
- * @param string $units Can be either 'metric' or 'imperial' (default). This affects almost all units returned.
- * @param string $lang The language to use for descriptions, default is 'en'. For possible values see below.
- * @param string $appid Your app id, default ''. See http://openweathermap.org/appid for more details.
- *
- * @throws OpenWeatherMap\Exception If OpenWeatherMap returns an error.
- * @throws \InvalidArgumentException If an argument error occurs.
- *
- * @return WeatherHistory The WeatherHistory object.
- *
- * There are three ways to specify the place to get weather information for:
- * - Use the city name: $query must be a string containing the city name.
- * - Use the city id: $query must be an integer containing the city id.
- * - Use the coordinates: $query must be an associative array containing the 'lat' and 'lon' values.
- *
- * Available languages are (as of 17. July 2013):
- * - English - en
- * - Russian - ru
- * - Italian - it
- * - Spanish - sp
- * - Ukrainian - ua
- * - German - de
- * - Portuguese - pt
- * - Romanian - ro
- * - Polish - pl
- * - Finnish - fi
- * - Dutch - nl
- * - French - fr
- * - Bulgarian - bg
- * - Swedish - se
- * - Chinese Traditional - zh_tw
- * - Chinese Simplified - zh_cn
- * - Turkish - tr
- *
- * @api
- */
- public function getWeatherHistory($query, \DateTime $start, $endOrCount = 1, $type = 'hour', $units = 'imperial', $lang = 'en', $appid = '')
- {
- if (!in_array($type, array('tick', 'hour', 'day'))) {
- throw new \InvalidArgumentException('$type must be either "tick", "hour" or "day"');
- }
-
- $xml = json_decode($this->getRawWeatherHistory($query, $start, $endOrCount, $type, $units, $lang, $appid), true);
-
- if ($xml['cod'] != 200) {
- throw new OWMException($xml['message'], $xml['cod']);
- }
-
- return new WeatherHistory($xml, $query);
- }
-
- /**
- * @deprecated Use {@link self::getRawWeatherData()} instead.
- */
- public function getRawData($query, $units = 'imperial', $lang = 'en', $appid = '', $mode = 'xml')
- {
- return $this->getRawWeatherData($query, $units, $lang, $appid, $mode);
- }
-
- /**
- * Directly returns the xml/json/html string returned by OpenWeatherMap for the current weather.
- *
- * @param array|int|string $query The place to get weather information for. For possible values see below.
- * @param string $units Can be either 'metric' or 'imperial' (default). This affects almost all units returned.
- * @param string $lang The language to use for descriptions, default is 'en'. For possible values see below.
- * @param string $appid Your app id, default ''. See http://openweathermap.org/appid for more details.
- * @param string $mode The format of the data fetched. Possible values are 'json', 'html' and 'xml' (default).
- *
- * @return string Returns false on failure and the fetched data in the format you specified on success.
- *
- * Warning If an error occurred, OpenWeatherMap returns data in json format ALWAYS
- *
- * There are three ways to specify the place to get weather information for:
- * - Use the city name: $query must be a string containing the city name.
- * - Use the city id: $query must be an integer containing the city id.
- * - Use the coordinates: $query must be an associative array containing the 'lat' and 'lon' values.
- *
- * Available languages are (as of 17. July 2013):
- * - English - en
- * - Russian - ru
- * - Italian - it
- * - Spanish - sp
- * - Ukrainian - ua
- * - German - de
- * - Portuguese - pt
- * - Romanian - ro
- * - Polish - pl
- * - Finnish - fi
- * - Dutch - nl
- * - French - fr
- * - Bulgarian - bg
- * - Swedish - se
- * - Chinese Traditional - zh_tw
- * - Chinese Simplified - zh_cn
- * - Turkish - tr
- *
- * @api
- */
- public function getRawWeatherData($query, $units = 'imperial', $lang = 'en', $appid = '', $mode = 'xml')
- {
- $url = $this->buildUrl($query, $units, $lang, $appid, $mode, $this->weatherUrl);
-
- return $this->cacheOrFetchResult($url);
- }
-
- /**
- * Directly returns the xml/json/html string returned by OpenWeatherMap for the hourly forecast.
- *
- * @param array|int|string $query The place to get weather information for. For possible values see below.
- * @param string $units Can be either 'metric' or 'imperial' (default). This affects almost all units returned.
- * @param string $lang The language to use for descriptions, default is 'en'. For possible values see below.
- * @param string $appid Your app id, default ''. See http://openweathermap.org/appid for more details.
- * @param string $mode The format of the data fetched. Possible values are 'json', 'html' and 'xml' (default).
- *
- * @return string Returns false on failure and the fetched data in the format you specified on success.
- *
- * Warning If an error occurred, OpenWeatherMap returns data in json format ALWAYS
- *
- * There are three ways to specify the place to get weather information for:
- * - Use the city name: $query must be a string containing the city name.
- * - Use the city id: $query must be an integer containing the city id.
- * - Use the coordinates: $query must be an associative array containing the 'lat' and 'lon' values.
- *
- * Available languages are (as of 17. July 2013):
- * - English - en
- * - Russian - ru
- * - Italian - it
- * - Spanish - sp
- * - Ukrainian - ua
- * - German - de
- * - Portuguese - pt
- * - Romanian - ro
- * - Polish - pl
- * - Finnish - fi
- * - Dutch - nl
- * - French - fr
- * - Bulgarian - bg
- * - Swedish - se
- * - Chinese Traditional - zh_tw
- * - Chinese Simplified - zh_cn
- * - Turkish - tr
- *
- * @api
- */
- public function getRawHourlyForecastData($query, $units = 'imperial', $lang = 'en', $appid = '', $mode = 'xml')
- {
- $url = $this->buildUrl($query, $units, $lang, $appid, $mode, $this->weatherHourlyForecastUrl);
-
- return $this->cacheOrFetchResult($url);
- }
-
- /**
- * Directly returns the xml/json/html string returned by OpenWeatherMap for the daily forecast.
- *
- * @param array|int|string $query The place to get weather information for. For possible values see below.
- * @param string $units Can be either 'metric' or 'imperial' (default). This affects almost all units returned.
- * @param string $lang The language to use for descriptions, default is 'en'. For possible values see below.
- * @param string $appid Your app id, default ''. See http://openweathermap.org/appid for more details.
- * @param string $mode The format of the data fetched. Possible values are 'json', 'html' and 'xml' (default)
- * @param int $cnt How many days of forecast shall be returned? Maximum (and default): 16
- *
- * @throws \InvalidArgumentException If $cnt is higher than 16.
- * @return string Returns false on failure and the fetched data in the format you specified on success.
- *
- * Warning If an error occurred, OpenWeatherMap returns data in json format ALWAYS
- *
- * There are three ways to specify the place to get weather information for:
- * - Use the city name: $query must be a string containing the city name.
- * - Use the city id: $query must be an integer containing the city id.
- * - Use the coordinates: $query must be an associative array containing the 'lat' and 'lon' values.
- *
- * Available languages are (as of 17. July 2013):
- * - English - en
- * - Russian - ru
- * - Italian - it
- * - Spanish - sp
- * - Ukrainian - ua
- * - German - de
- * - Portuguese - pt
- * - Romanian - ro
- * - Polish - pl
- * - Finnish - fi
- * - Dutch - nl
- * - French - fr
- * - Bulgarian - bg
- * - Swedish - se
- * - Chinese Traditional - zh_tw
- * - Chinese Simplified - zh_cn
- * - Turkish - tr
- *
- * @api
- */
- public function getRawDailyForecastData($query, $units = 'imperial', $lang = 'en', $appid = '', $mode = 'xml', $cnt = 16)
- {
- if ($cnt > 16) {
- throw new \InvalidArgumentException('$cnt must be 16 or below!');
- }
- $url = $this->buildUrl($query, $units, $lang, $appid, $mode, $this->weatherDailyForecastUrl) . "&cnt=$cnt";
-
- return $this->cacheOrFetchResult($url);
- }
-
- /**
- * Directly returns the xml/json/html string returned by OpenWeatherMap for the daily forecast.
- *
- * @param array|int|string $query The place to get weather information for. For possible values see below.
- * @param \DateTime $start The \DateTime object of the date to get the first weather information from.
- * @param \DateTime|int $endOrCount Can be either a \DateTime object representing the end of the period to
- * receive weather history data for or an integer counting the number of
- * reports requested.
- * @param string $type The period of the weather history requested. Can be either be either "tick",
- * "hour" or "day".
- * @param string $units Can be either 'metric' or 'imperial' (default). This affects almost all units returned.
- * @param string $lang The language to use for descriptions, default is 'en'. For possible values see below.
- * @param string $appid Your app id, default ''. See http://openweathermap.org/appid for more details.
- *
- * @throws \InvalidArgumentException
- *
- * @return string Returns false on failure and the fetched data in the format you specified on success.
- *
- * Warning If an error occurred, OpenWeatherMap returns data in json format ALWAYS
- *
- * There are three ways to specify the place to get weather information for:
- * - Use the city name: $query must be a string containing the city name.
- * - Use the city id: $query must be an integer containing the city id.
- * - Use the coordinates: $query must be an associative array containing the 'lat' and 'lon' values.
- *
- * Available languages are (as of 17. July 2013):
- * - English - en
- * - Russian - ru
- * - Italian - it
- * - Spanish - sp
- * - Ukrainian - ua
- * - German - de
- * - Portuguese - pt
- * - Romanian - ro
- * - Polish - pl
- * - Finnish - fi
- * - Dutch - nl
- * - French - fr
- * - Bulgarian - bg
- * - Swedish - se
- * - Chinese Traditional - zh_tw
- * - Chinese Simplified - zh_cn
- * - Turkish - tr
- *
- * @api
- */
- public function getRawWeatherHistory($query, \DateTime $start, $endOrCount = 1, $type = 'hour', $units = 'imperial', $lang = 'en', $appid = '')
- {
- if (!in_array($type, array('tick', 'hour', 'day'))) {
- throw new \InvalidArgumentException('$type must be either "tick", "hour" or "day"');
- }
-
- $queryUrl = $this->weatherHistoryUrl . $this->buildQueryUrlParameter($query) . "&start={$start->format('U')}";
-
- if ($endOrCount instanceof \DateTime) {
- $queryUrl .= "&end={$endOrCount->format('U')}";
- } else if (is_numeric($endOrCount) && $endOrCount > 0) {
- $queryUrl .= "&cnt=$endOrCount";
- } else {
- throw new \InvalidArgumentException('$endOrCount must be either a \DateTime or a positive integer.');
- }
- $queryUrl .= "&type=$type&units=$units&lang=$lang";
-
- if (!empty($appid)) {
- $queryUrl .= "&APPID=$appid";
- }
-
- return $this->cacheOrFetchResult($queryUrl);
- }
-
- /**
- * Fetches the result or delivers a cached version of the result.
- *
- * @param $url
- *
- * @return string
- *
- * @internal
- */
- private function cacheOrFetchResult($url)
- {
- if ($this->cacheClass !== false) {
- /** @var \Cmfcmf\OpenWeatherMap\AbstractCache $cache */
- $cache = $this->cacheClass;
- $cache->setSeconds($this->seconds);
- if ($cache->isCached($url)) {
- return $cache->getCached($url);
- }
- $result = $this->fetcher->fetch($url);
- $cache->setCached($url, $result);
- } else {
- $result = $this->fetcher->fetch($url);
- }
-
- return $result;
- }
-
- /**
- * Build the url to fetch weather data from.
- *
- * @param $query
- * @param $units
- * @param $lang
- * @param $appid
- * @param $mode
- * @param string $url The url to prepend.
- *
- * @return bool|string The fetched url, false on failure.
- *
- * @internal
- */
- private function buildUrl($query, $units, $lang, $appid, $mode, $url)
- {
- $queryUrl = $this->buildQueryUrlParameter($query);
-
- $url = $url . "$queryUrl&units=$units&lang=$lang&mode=$mode";
- if (!empty($appid)) {
- $url .= "&APPID=$appid";
- }
-
- return $url;
- }
-
- /**
- * Builds the query string for the url.
- *
- * @param $query
- *
- * @return string The built query string for the url.
- * @throws \InvalidArgumentException If the query parameter is invalid.
- *
- * @internal
- */
- private function buildQueryUrlParameter($query)
- {
- switch ($query) {
- case (is_array($query) && isset($query['lat']) && isset($query['lon']) && is_numeric($query['lat']) && is_numeric($query['lon'])):
- return "lat={$query['lat']}&lon={$query['lon']}";
- case (is_numeric($query)):
- return "id=$query";
- case (is_string($query)):
- return "q=" . urlencode($query);
- default:
- throw new \InvalidArgumentException('Error: $query has the wrong format. See the documentation of OpenWeatherMap::getRawData() to read about valid formats.');
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap;
-
-/**
- * Abstract cache class to be overwritten by custom cache implementations.
- */
-abstract class AbstractCache
-{
- /**
- * @var int $seconds Cache time in seconds.
- */
- protected $seconds;
-
- /**
- * Checks whether a cached weather data is available.
- *
- * @param string $url The unique url of the cached content.
- *
- * @return bool False if no cached information is available, otherwise true.
- *
- * You need to check if a cached result is outdated here. Return false in that case.
- */
- abstract public function isCached($url);
-
- /**
- * Returns cached weather data.
- *
- * @param string $url The unique url of the cached content.
- *
- * @return string|bool The cached data if it exists, false otherwise.
- */
- abstract public function getCached($url);
-
- /**
- * Saves cached weather data.
- *
- * @param string $url The unique url of the cached content.
- * @param string $content The weather data to cache.
- *
- * @return bool True on success, false on failure.
- */
- abstract public function setCached($url, $content);
-
- /**
- * Set after how much seconds the cache shall expire.
- *
- * @param int $seconds
- */
- public function setSeconds($seconds)
- {
- $this->seconds = $seconds;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap;
-
-use Cmfcmf\OpenWeatherMap;
-use Cmfcmf\OpenWeatherMap\Util\City;
-use Cmfcmf\OpenWeatherMap\Util\Sun;
-use Cmfcmf\OpenWeatherMap\Util\Temperature;
-use Cmfcmf\OpenWeatherMap\Util\Unit;
-use Cmfcmf\OpenWeatherMap\Util\Weather as WeatherObj;
-use Cmfcmf\OpenWeatherMap\Util\Wind;
-
-/**
- * Weather class used to hold the current weather data.
- */
-class CurrentWeather
-{
- /**
- * The city object.
- *
- * @var Util\City
- */
- public $city;
-
- /**
- * The temperature object.
- *
- * @var Util\Temperature
- */
- public $temperature;
-
- /**
- * @var Util\Unit
- */
- public $humidity;
-
- /**
- * @var Util\Unit
- */
- public $pressure;
-
- /**
- * @var Util\Wind
- */
- public $wind;
-
- /**
- * @var Util\Unit
- */
- public $clouds;
-
- /**
- * @var Util\Unit
- */
- public $precipitation;
-
- /**
- * @var Util\Sun
- */
- public $sun;
-
- /**
- * @var Util\Weather
- */
- public $weather;
-
- /**
- * @var \DateTime
- */
- public $lastUpdate;
-
- /**
- * Create a new weather object.
- *
- * @param \SimpleXMLElement $xml
- * @param string $units
- *
- * @internal
- */
- public function __construct(\SimpleXMLElement $xml, $units)
- {
- $this->city = new City($xml->city['id'], $xml->city['name'], $xml->city->coord['lon'], $xml->city->coord['lat'], $xml->city->country);
- $this->temperature = new Temperature(new Unit($xml->temperature['value'], $xml->temperature['unit']), new Unit($xml->temperature['min'], $xml->temperature['unit']), new Unit($xml->temperature['max'], $xml->temperature['unit']));
- $this->humidity = new Unit($xml->humidity['value'], $xml->humidity['unit']);
- $this->pressure = new Unit($xml->pressure['value'], $xml->pressure['unit']);
-
- // This is kind of a hack, because the units are missing in the xml document.
- if ($units == 'metric') {
- $windSpeedUnit = 'm/s';
- } else {
- $windSpeedUnit = 'mph';
- }
- $this->wind = new Wind(new Unit($xml->wind->speed['value'], $windSpeedUnit, $xml->wind->speed['name']), new Unit($xml->wind->direction['value'], $xml->wind->direction['code'], $xml->wind->direction['name']));
-
- $this->clouds = new Unit($xml->clouds['value'], null, $xml->clouds['name']);
- $this->precipitation = new Unit($xml->precipitation['value'], $xml->precipitation['unit'], $xml->precipitation['mode']);
- $utctz = new \DateTimeZone('UTC');
- $this->sun = new Sun(new \DateTime($xml->city->sun['rise'], $utctz), new \DateTime($xml->city->sun['set'], $utctz));
- $this->weather = new WeatherObj($xml->weather['number'], $xml->weather['value'], $xml->weather['icon']);
- $this->lastUpdate = new \DateTime($xml->lastupdate['value'], $utctz);
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap;
-
-/**
- * Dummy class extending \Exception to allow checking if it is an OpenWeatherMap error
- * or an argument error.
- */
-class Exception extends \Exception
-{
-
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Fetcher;
-
-/**
- * Class CurlFetcher.
- *
- * @internal
- */
-class CurlFetcher implements FetcherInterface
-{
- /**
- * {@inheritdoc}
- */
- public function fetch($url)
- {
- $ch = curl_init($url);
- $timeout = 5;
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- $content = curl_exec($ch);
- curl_close($ch);
-
- return $content;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Fetcher;
-
-/**
- * Interface FetcherInterface.
- *
- * @api
- */
-interface FetcherInterface
-{
- /**
- * Fetch contents from the specified url.
- *
- * @param string $url The url to be fetched.
- *
- * @return string The fetched content.
- *
- * @api
- */
- public function fetch($url);
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Fetcher;
-
-/**
- * Class FileGetContentsFetcher.
- *
- * @internal
- */
-class FileGetContentsFetcher implements FetcherInterface
-{
- /**
- * {@inheritdoc}
- */
- public function fetch($url)
- {
- return file_get_contents($url);
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap;
-
-use Cmfcmf\OpenWeatherMap;
-use Cmfcmf\OpenWeatherMap\Util\City;
-use Cmfcmf\OpenWeatherMap\Util\Sun;
-use Cmfcmf\OpenWeatherMap\Util\Temperature;
-use Cmfcmf\OpenWeatherMap\Util\Time;
-use Cmfcmf\OpenWeatherMap\Util\Unit;
-use Cmfcmf\OpenWeatherMap\Util\Weather as WeatherObj;
-use Cmfcmf\OpenWeatherMap\Util\Wind;
-
-/**
- * Class Forecast.
- */
-class Forecast extends CurrentWeather
-{
- /**
- * @var Time The time of the forecast.
- */
- public $time;
-
- /**
- * Create a new weather object for forecasts.
- *
- * @param \SimpleXMLElement $xml The forecasts xml.
- * @param string $units Ths units used.
- *
- * @internal
- */
- public function __construct(\SimpleXMLElement $xml, $units)
- {
- $this->city = new City($xml->city['id'], $xml->city['name'], $xml->city->coord['lon'], $xml->city->coord['lat'], $xml->city->country);
-
- if ($units == 'metric') {
- $temperatureUnit = "°C";
- } else {
- $temperatureUnit = 'F';
- }
-
- $xml->temperature['value'] = ($xml->temperature['max'] + $xml->temperature['min']) / 2;
-
- $this->temperature = new Temperature(new Unit($xml->temperature['value'], $temperatureUnit), new Unit($xml->temperature['min'], $temperatureUnit), new Unit($xml->temperature['max'], $temperatureUnit));
- $this->humidity = new Unit($xml->humidity['value'], $xml->humidity['unit']);
- $this->pressure = new Unit($xml->pressure['value'], $xml->pressure['unit']);
-
- // This is kind of a hack, because the units are missing in the xml document.
- if ($units == 'metric') {
- $windSpeedUnit = 'm/s';
- } else {
- $windSpeedUnit = 'mps';
- }
-
- $this->wind = new Wind(new Unit($xml->windSpeed['mps'], $windSpeedUnit, $xml->windSpeed['name']), new Unit($xml->windDirection['value'], $xml->windDirection['code'], $xml->windDirection['name']));
- $this->clouds = new Unit($xml->clouds['all'], $xml->clouds['unit'], $xml->clouds['value']);
- $this->precipitation = new Unit($xml->precipitation['value'], null, $xml->precipitation['type']);
- $this->sun = new Sun(new \DateTime($xml->city->sun['rise']), new \DateTime($xml->city->sun['set']));
- $this->weather = new WeatherObj($xml->symbol['number'], $xml->symbol['name'], $xml->symbol['var']);
- $this->lastUpdate = new \DateTime($xml->lastupdate['value']);
-
- if (isset($xml['from'])) {
- $this->time = new Time($xml['from'], $xml['to']);
- } else {
- $this->time = new Time($xml['day']);
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap;
-
-use Cmfcmf\OpenWeatherMap\Util\Temperature;
-use Cmfcmf\OpenWeatherMap\Util\Unit;
-use Cmfcmf\OpenWeatherMap\Util\Weather;
-use Cmfcmf\OpenWeatherMap\Util\Wind;
-
-/**
- * Class WeatherHistory.
- */
-class History
-{
- /**
- * The city object.
- *
- * @var Util\City
- */
- public $city;
-
- /**
- * The temperature object.
- *
- * @var Util\Temperature
- */
- public $temperature;
-
- /**
- * @var Util\Unit
- */
- public $humidity;
-
- /**
- * @var Util\Unit
- */
- public $pressure;
-
- /**
- * @var Util\Wind
- */
- public $wind;
-
- /**
- * @var Util\Unit
- */
- public $clouds;
-
- /**
- * @var Util\Unit
- */
- public $precipitation;
-
- /**
- * @var Util\Weather
- */
- public $weather;
-
- /**
- * @var \DateTime The time of the history.
- */
- public $time;
-
- /**
- * @param $city
- * @param $weather
- * @param $temperature
- * @param $pressure
- * @param $humidity
- * @param $clouds
- * @param $rain
- * @param $wind
- * @param $time
- *
- * @internal
- */
- public function __construct($city, $weather, $temperature, $pressure, $humidity, $clouds, $rain, $wind, $time)
- {
- $this->city = $city;
- $this->weather = new Weather($weather['id'], $weather['description'], $weather['icon']);
- $this->temperature = new Temperature(new Unit($temperature['now'] - 273.15, "\xB0C"), new Unit($temperature['min'] - 273.15, "\xB0C"), new Unit($temperature['max'] - 273.15, "\xB0C"));
- $this->pressure = new Unit($pressure, 'kPa');
- $this->humidity = new Unit($humidity, '%');
- $this->clouds = new Unit($clouds, '%');
- $this->precipitation = new Unit($rain['val'], $rain['unit']);
- $this->wind = new Wind(new Unit($wind['speed']), new Unit($wind['deg']));
- $this->time = $time;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Util;
-
-/**
- * The city class representing a city object.
- */
-class City
-{
- /**
- * @var int The city id.
- */
- public $id;
-
- /**
- * @var string The name of the city.
- */
- public $name;
-
- /**
- * @var float The longitude of the city.
- */
- public $lon;
-
- /**
- * @var float The latitude of the city.
- */
- public $lat;
-
- /**
- * @var string The abbreviation of the country the city is located in.
- */
- public $country;
-
- /**
- * @var int The city's population
- */
- public $population;
-
- /**
- * Create a new city object.
- *
- * @param int $id The city id.
- * @param string $name The name of the city.
- * @param float $lon The longitude of the city.
- * @param float $lat The latitude of the city.
- * @param string $country The abbreviation of the country the city is located in
- * @param int $population The city's population.
- *
- * @internal
- */
- public function __construct($id, $name = null, $lon = null, $lat = null, $country = null, $population = null)
- {
- $this->id = (int)$id;
- $this->name = isset($name) ? (string)$name : null;
- $this->lon = isset($lon) ? (float)$lon : null;
- $this->lat = isset($lat) ? (float)$lat : null;
- $this->country = isset($country) ? (string)$country : null;
- $this->population = isset($population) ? (int)$population : null;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Util;
-
-/**
- * The sun class representing a sun object.
- */
-class Sun
-{
- /**
- * @var \DateTime The time of the sun rise.
- */
- public $rise;
-
- /**
- * @var \DateTime The time of the sun set.
- */
- public $set;
-
- /**
- * Create a new sun object.
- *
- * @param \DateTime $rise The time of the sun rise
- * @param \DateTime $set The time of the sun set.
- *
- * @throws \LogicException If sunset is before sunrise.
- * @internal
- */
- public function __construct(\DateTime $rise, \DateTime $set)
- {
- if ($set < $rise) {
- throw new \LogicException('Sunset cannot be before sunrise!');
- }
- $this->rise = $rise;
- $this->set = $set;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Util;
-
-/**
- * The temperature class representing a temperature object.
- */
-class Temperature
-{
- /**
- * @var Unit The current temperature.
- */
- public $now;
-
- /**
- * @var Unit The minimal temperature.
- */
- public $min;
-
- /**
- * @var Unit The maximal temperature.
- */
- public $max;
-
- /**
- * Returns the current temperature as formatted string.
- *
- * @return string The current temperature as a formatted string.
- */
- public function __toString()
- {
- return $this->now->__toString();
- }
-
- /**
- * Returns the current temperature's unit.
- *
- * @return string The current temperature's unit.
- */
- public function getUnit()
- {
- return $this->now->getUnit();
- }
-
- /**
- * Returns the current temperature.
- *
- * @return string The current temperature.
- */
- public function getValue()
- {
- return $this->now->getValue();
- }
-
- /**
- * Returns the current temperature's description.
- *
- * @return string The current temperature's description.
- */
- public function getDescription()
- {
- return $this->now->getDescription();
- }
-
- /**
- * Returns the current temperature as formatted string.
- *
- * @return string The current temperature as formatted string.
- */
- public function getFormatted()
- {
- return $this->now->getFormatted();
- }
-
- /**
- * Create a new temperature object.
- *
- * @param Unit $now The current temperature.
- * @param Unit $min The minimal temperature.
- * @param Unit $max The maximal temperature.
- *
- * @internal
- */
- public function __construct(Unit $now, Unit $min, Unit $max)
- {
- $this->now = $now;
- $this->min = $min;
- $this->max = $max;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Util;
-
-/**
- * The time class representing a time object.
- */
-class Time
-{
- /**
- * @var \DateTime The start time for the forecast.
- */
- public $from;
-
- /**
- * @var \DateTime The end time for the forecast.
- */
- public $to;
-
- /**
- * @var \DateTime The day of the forecast.
- */
- public $day;
-
- /**
- * Create a new time object.
- *
- * @param string|\DateTime $from The start time for the forecast.
- * @param string|\DateTime $to The end time for the forecast.
- *
- * @internal
- */
- public function __construct($from, $to = null)
- {
- if (isset($to)) {
- $from = ($from instanceof \DateTime) ? $from : new \DateTime((string)$from);
- $to = ($to instanceof \DateTime) ? $to : new \DateTime((string)$to);
- $day = new \DateTime($from->format('Y-m-d'));
- } else {
- $from = ($from instanceof \DateTime) ? $from : new \DateTime((string)$from);
- $day = clone $from;
- $to = clone $from;
- $to = $to->add(new \DateInterval('PT23H59M59S'));
- }
-
- $this->from = $from;
- $this->to = $to;
- $this->day = $day;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Util;
-
-/**
- * The unit class representing a unit object.
- */
-class Unit
-{
- /**
- * @var float The value.
- *
- * @internal
- */
- private $value;
-
- /**
- * @var string The value's unit.
- *
- * @internal
- */
- private $unit;
-
- /**
- * @var string The value's description.
- *
- * @internal
- */
- private $description;
-
- /**
- * Create a new unit object.
- *
- * @param float $value The value.
- * @param string $unit The unit of the value.
- * @param string $description The description of the value.
- *
- * @internal
- */
- public function __construct($value = 0.0, $unit = "", $description = "")
- {
- $this->value = (float)$value;
- $this->unit = (string)$unit;
- $this->description = (string)$description;
- }
-
- /**
- * Get the value as formatted string with unit.
- *
- * @return string The value as formatted string with unit.
- *
- * The unit is not included if it is empty.
- */
- public function __toString()
- {
- return $this->getFormatted();
- }
-
- /**
- * Get the value's unit.
- *
- * @return string The value's unit.
- *
- * This also converts 'celsius' to '°C' and 'fahrenheit' to 'F'.
- */
- public function getUnit()
- {
- // Units are inconsistent. Only celsius and fahrenheit are not abbreviated. This check fixes that.
- if ($this->unit == 'celsius') {
- return "°C";
- } else if ($this->unit == 'fahrenheit') {
- return 'F';
- } else {
- return $this->unit;
- }
- }
-
- /**
- * Get the value.
- *
- * @return float The value.
- */
- public function getValue()
- {
- return $this->value;
- }
-
- /**
- * Get the value's description.
- *
- * @return string The value's description.
- */
- public function getDescription()
- {
- return $this->description;
- }
-
- /**
- * Get the value as formatted string with unit.
- *
- * @return string The value as formatted string with unit.
- *
- * The unit is not included if it is empty.
- */
- public function getFormatted()
- {
- if ($this->getUnit() != "") {
- return "{$this->getValue()} {$this->getUnit()}";
- } else {
- return "{$this->getValue()}";
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Util;
-
-/**
- * The weather class representing a weather object.
- */
-class Weather
-{
- /**
- * @var int The weather id.
- */
- public $id;
-
- /**
- * @var string The weather description.
- */
- public $description;
-
- /**
- * @var string the icon name.
- */
- public $icon;
-
- /**
- * @var string The url for icons.
- *
- * @see self::getIconUrl() to see how it is used.
- */
- private $iconUrl = "http://openweathermap.org/img/w/%s.png";
-
- /**
- * Create a new weather object.
- *
- * @param int $id The icon id.
- * @param string $description The weather description.
- * @param string $icon The icon name.
- *
- * @internal
- */
- public function __construct($id, $description, $icon)
- {
- $this->id = (int)$id;
- $this->description = (string)$description;
- $this->icon = (string)$icon;
- }
-
- /**
- * Get the weather description.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->description;
- }
-
- /**
- * Get the icon url.
- *
- * @return string The icon url.
- */
- public function getIconUrl()
- {
- return str_replace("%s", $this->icon, $this->iconUrl);
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Util;
-
-/**
- * The wind class representing a wind object.
- */
-class Wind
-{
- /**
- * @var Unit The wind speed.
- */
- public $speed;
-
- /**
- * @var Unit The wind direction.
- */
- public $direction;
-
- /**
- * Create a new wind object.
- *
- * @param Unit $speed The wind speed.
- * @param Unit $direction The wind direction.
- *
- * @internal
- */
- public function __construct(Unit $speed, Unit $direction)
- {
- $this->speed = $speed;
- $this->direction = $direction;
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap;
-
-use Cmfcmf\OpenWeatherMap;
-use Cmfcmf\OpenWeatherMap\Util\City;
-use Cmfcmf\OpenWeatherMap\Util\Sun;
-
-/**
- * Weather class returned by Cmfcmf\OpenWeatherMap->getWeather().
- *
- * @see Cmfcmf\OpenWeatherMap::getWeather() The function using it.
- */
-class WeatherForecast implements \Iterator
-{
- /**
- * A city object.
- *
- * @var Util\City
- */
- public $city;
-
- /**
- * A sun object
- *
- * @var Util\Sun
- */
- public $sun;
-
- /**
- * The time of the last update of this weather data.
- *
- * @var \DateTime
- */
- public $lastUpdate;
-
- /**
- * An array of {@link WeatherForecast} objects.
- *
- * @var array
- *
- * @see WeatherForecast The WeatherForecast class.
- */
- private $forecasts;
-
- /**
- * @internal
- */
- private $position = 0;
-
- /**
- * Create a new Forecast object.
- *
- * @param $xml
- * @param string $units
- * @param int $days How many days of forecast to receive.
- *
- * @internal
- */
- public function __construct($xml, $units, $days)
- {
- $this->city = new City(-1, $xml->location->name, $xml->location->location['longitude'], $xml->location->location['latitude'], $xml->location->country);
- $this->sun = new Sun(new \DateTime($xml->sun['rise']), new \DateTime($xml->sun['set']));
- $this->lastUpdate = new \DateTime($xml->meta->lastupdate);
-
- $counter = 0;
- foreach ($xml->forecast->time as $time) {
- $forecast = new Forecast($time, $units);
- $forecast->city = $this->city;
- $this->forecasts[] = $forecast;
-
- $counter++;
- // Make sure to only return the requested number of days.
- if ($days <= 5 && $counter == $days * 8) {
- break;
- } else if ($days > 5 && $counter == $days) {
- break;
- }
- }
- }
-
- /**
- * @internal
- */
- public function rewind()
- {
- $this->position = 0;
- }
-
- /**
- * @internal
- */
- public function current()
- {
- return $this->forecasts[$this->position];
- }
-
- /**
- * @internal
- */
- public function key()
- {
- return $this->position;
- }
-
- /**
- * @internal
- */
- public function next()
- {
- ++$this->position;
- }
-
- /**
- * @internal
- */
- public function valid()
- {
- return isset($this->forecasts[$this->position]);
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap;
-
-use Cmfcmf\OpenWeatherMap;
-
-/**
- * Class WeatherHistory.
- */
-class WeatherHistory implements \Iterator
-{
- /**
- * The city object. IMPORTANT: Not all values will be set
- *
- * @var Util\City
- */
- public $city;
-
- /**
- * The time needed to calculate the request data.
- *
- * @var float
- */
- public $calctime;
-
- /**
- * An array of {@link WeatherHistory} objects.
- *
- * @var array
- *
- * @see WeatherForecast The WeatherForecast class.
- */
- private $histories;
-
- /**
- * @internal
- */
- private $position = 0;
-
- public function __construct($weatherHistory, $query)
- {
- if (isset($weatherHistory['list'][0]['city'])) {
- $country = $weatherHistory['list'][0]['city']['country'];
- $population = $weatherHistory['list'][0]['city']['population'];
- } else {
- $country = null;
- $population = null;
- }
-
- $this->city = new OpenWeatherMap\Util\City($weatherHistory['city_id'], (is_string($query)) ? $query : null, (isset($query['lon'])) ? $query['lon'] : null, (isset($query['lat'])) ? $query['lat'] : null, $country, $population);
- $this->calctime = $weatherHistory['calctime'];
-
- foreach ($weatherHistory['list'] as $history) {
- if (isset($history['rain'])) {
- $units = array_keys($history['rain']);
- } else {
- $units = array(0 => null);
- }
-
- $this->histories[] = new History($this->city, $history['weather'][0], array('now' => $history['main']['temp'], 'min' => $history['main']['temp_min'], 'max' => $history['main']['temp_max']), $history['main']['pressure'], $history['main']['humidity'], $history['clouds']['all'], isset($history['rain']) ? array('val' => $history['rain'][($units[0])], 'unit' => $units[0]) : null, $history['wind'], \DateTime::createFromFormat('U', $history['dt']));
- }
- }
-
- /**
- * @internal
- */
- public function rewind()
- {
- $this->position = 0;
- }
-
- /**
- * @internal
- */
- public function current()
- {
- return $this->histories[$this->position];
- }
-
- /**
- * @internal
- */
- public function key()
- {
- return $this->position;
- }
-
- /**
- * @internal
- */
- public function next()
- {
- ++$this->position;
- }
-
- /**
- * @internal
- */
- public function valid()
- {
- return isset($this->histories[$this->position]);
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-use Cmfcmf\OpenWeatherMap;
-use Cmfcmf\OpenWeatherMap\AbstractCache;
-
-if (file_exists('../vendor/autoload.php')) {
- // Library is not part of a project. "composer install" was executed directly on this library's composer file.
- require('../vendor/autoload.php');
-} else {
- // Library is part of a project.
- /** @noinspection PhpIncludeInspection */
- require('../../../autoload.php');
-}
-
-/**
- * Example cache implementation.
- *
- * @ignore
- */
-class ExampleCache extends AbstractCache
-{
- private function urlToPath($url)
- {
- $tmp = sys_get_temp_dir();
- $dir = $tmp . DIRECTORY_SEPARATOR . "OpenWeatherMapPHPAPI";
- if (!is_dir($dir)) {
- mkdir($dir);
- }
-
- $path = $dir . DIRECTORY_SEPARATOR . md5($url);
-
- return $path;
- }
-
- /**
- * @inheritdoc
- */
- public function isCached($url)
- {
- $path = $this->urlToPath($url);
- if (!file_exists($path) || filectime($path) + $this->seconds < time()) {
- echo "Weather data is NOT cached!\n";
-
- return false;
- }
-
- echo "Weather data is cached!\n";
-
- return true;
- }
-
- /**
- * @inheritdoc
- */
- public function getCached($url)
- {
- return file_get_contents($this->urlToPath($url));
- }
-
- /**
- * @inheritdoc
- */
- public function setCached($url, $content)
- {
- file_put_contents($this->urlToPath($url), $content);
- }
-}
-
-// Language of data (try your own language here!):
-$lang = 'de';
-
-// Units (can be 'metric' or 'imperial' [default]):
-$units = 'metric';
-
-// Example 1: Use your own cache implementation. Cache for 10 seconds only in this example.
-$owm = new OpenWeatherMap(null, new ExampleCache(), 10);
-
-$weather = $owm->getWeather('Berlin', $units, $lang);
-echo "EXAMPLE 1<hr />\n\n\n";
-echo $weather->temperature;
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-use Cmfcmf\OpenWeatherMap;
-use Cmfcmf\OpenWeatherMap\Exception as OWMException;
-
-if (file_exists('../vendor/autoload.php')) {
- // Library is not part of a project. "composer install" was executed directly on this library's composer file.
- require('../vendor/autoload.php');
-} else {
- // Library is part of a project.
- /** @noinspection PhpIncludeInspection */
- require('../../../autoload.php');
-}
-
-// Language of data (try your own language here!):
-$lang = 'de';
-
-// Units (can be 'metric' or 'imperial' [default]):
-$units = 'metric';
-
-// Get OpenWeatherMap object. Don't use caching (take a look into Example_Cache.php to see how it works).
-$owm = new OpenWeatherMap();
-
-// Example 1: Get current temperature in Berlin.
-$weather = $owm->getWeather('Berlin', $units, $lang);
-echo "EXAMPLE 1<hr />\n\n\n";
-
-// $weather contains all available weather information for Berlin.
-// Let's get the temperature:
-
-// Returns it as formatted string (using __toString()):
-echo $weather->temperature;
-echo "<br />\n";
-
-// Returns it as formatted string (using a method):
-echo $weather->temperature->getFormatted();
-echo "<br />\n";
-
-// Returns the value only:
-echo $weather->temperature->getValue();
-echo "<br />\n";
-
-// Returns the unit only:
-echo $weather->temperature->getUnit();
-echo "<br />\n";
-
-/**
- * In the example above we're using a "shortcut". OpenWeatherMap returns the minimum temperature of a day,
- * the maximum temperature and the temperature right now. If you don't specify which temperature you want, it will default
- * to the current temperature. See below how to access the other values. Notice that each of them has implemented the methods
- * "getFormatted()", "getValue()", "getUnit()".
- */
-
-// Returns the current temperature:
-echo "Current: " . $weather->temperature->now;
-echo "<br />\n";
-
-// Returns the minimum temperature:
-echo "Minimum: " . $weather->temperature->min;
-echo "<br />\n";
-
-// Returns the maximum temperature:
-echo "Maximum: " . $weather->temperature->max;
-echo "<br />\n";
-
-/**
- * When speaking about "current" and "now", this means when the weather data was last updated. You can get this
- * via a DateTime object:
- */
-echo "Last update: " . $weather->lastUpdate->format('r');
-echo "<br />\n";
-
-// Example 2: Get current pressure and humidity in Hongkong.
-$weather = $owm->getWeather('Hongkong', $units, $lang);
-echo "<br /><br />\n\n\nEXAMPLE 2<hr />\n\n\n";
-
-/**
- * You can use the methods above to only get the value or the unit.
- */
-
-echo "Pressure: " . $weather->pressure;
-echo "<br />\n";
-echo "Humidity: " . $weather->humidity;
-echo "<br />\n";
-
-// Example 3: Get today's sunrise and sunset times.
-echo "<br /><br />\n\n\nEXAMPLE 3<hr />\n\n\n";
-
-/**
- * These functions return a DateTime object.
- */
-
-echo "Sunrise: " . $weather->sun->rise->format('r');
-echo "<br />\n";
-echo "Sunset: " . $weather->sun->set->format('r');
-echo "<br />\n";
-
-// Example 4: Get current temperature from coordinates (Greenland :-) ).
-$weather = $owm->getWeather(array('lat' => 77.73038, 'lon' => 41.89604), $units, $lang);
-echo "<br /><br />\n\n\nEXAMPLE 4<hr />\n\n\n";
-
-echo "Temperature: " . $weather->temperature;
-echo "<br />\n";
-
-// Example 5: Get current temperature from city id. The city is an internal id used by OpenWeatherMap. See example 6 too.
-$weather = $owm->getWeather(2172797, $units, $lang);
-echo "<br /><br />\n\n\nEXAMPLE 5<hr />\n\n\n";
-
-echo "City: " . $weather->city->name;
-echo "<br />\n";
-
-echo "Temperature: " . $weather->temperature;
-echo "<br />\n";
-
-// Example 6: Get information about a city.
-$weather = $owm->getWeather('Paris', $units, $lang);
-echo "<br /><br />\n\n\nEXAMPLE 6<hr />\n\n\n";
-
-echo "Id: " . $weather->city->id;
-echo "<br />\n";
-
-echo "Name: " . $weather->city->name;
-echo "<br />\n";
-
-echo "Lon: " . $weather->city->lon;
-echo "<br />\n";
-
-echo "Lat: " . $weather->city->lat;
-echo "<br />\n";
-
-echo "Country: " . $weather->city->country;
-echo "<br />\n";
-
-// Example 7: Get wind information.
-echo "<br /><br />\n\n\nEXAMPLE 7<hr />\n\n\n";
-
-echo "Speed: " . $weather->wind->speed;
-echo "<br />\n";
-
-echo "Direction: " . $weather->wind->direction;
-echo "<br />\n";
-
-/**
- * For speed and direction there is a description available, which isn't always translated.
- */
-
-echo "Speed: " . $weather->wind->speed->getDescription();
-echo "<br />\n";
-
-echo "Direction: " . $weather->wind->direction->getDescription();
-echo "<br />\n";
-
-// Example 8: Get information about the clouds.
-echo "<br /><br />\n\n\nEXAMPLE 8<hr />\n\n\n";
-
-// The number in braces seems to be an indicator how cloudy the sky is.
-echo "Clouds: " . $weather->clouds->getDescription() . " (" . $weather->clouds . ")";
-echo "<br />\n";
-
-// Example 9: Get information about precipitation.
-echo "<br /><br />\n\n\nEXAMPLE 9<hr />\n\n\n";
-
-echo "Precipation: " . $weather->precipitation->getDescription() . " (" . $weather->precipitation . ")";
-echo "<br />\n";
-
-// Example 10: Show copyright notice. WARNING: This is no offical text. This hint was created regarding to http://www.http://openweathermap.org/copyright .
-echo "<br /><br />\n\n\nEXAMPLE 10<hr />\n\n\n";
-
-echo $owm::COPYRIGHT;
-echo "<br />\n";
-
-// Example 11: Get raw xml data.
-echo "<br /><br />\n\n\nEXAMPLE 11<hr />\n\n\n";
-
-echo "<pre><code>" . htmlspecialchars($owm->getRawWeatherData('Berlin', $units, $lang, null, 'xml')) . "</code></pre>";
-echo "<br />\n";
-
-// Example 12: Get raw json data.
-echo "<br /><br />\n\n\nEXAMPLE 12<hr />\n\n\n";
-
-echo "<code>" . htmlspecialchars($owm->getRawWeatherData('Berlin', $units, $lang, null, 'json')) . "</code>";
-echo "<br />\n";
-
-// Example 13: Get raw html data.
-echo "<br /><br />\n\n\nEXAMPLE 13<hr />\n\n\n";
-
-echo $owm->getRawWeatherData('Berlin', $units, $lang, null, 'html');
-echo "<br />\n";
-
-// Example 14: Error handling.
-echo "<br /><br />\n\n\nEXAMPLE 14<hr />\n\n\n";
-
-// Try wrong city name.
-try {
- $weather = $owm->getWeather("ThisCityNameIsNotValidAndDoesNotExist", $units, $lang);
-} catch (OWMException $e) {
- echo $e->getMessage() . ' (Code ' . $e->getCode() . ').';
- echo "<br />\n";
-}
-
-// Try invalid $query.
-try {
- $weather = $owm->getWeather(new \DateTime('now'), $units, $lang);
-} catch (\Exception $e) {
- echo $e->getMessage() . ' (Code ' . $e->getCode() . ').';
- echo "<br />\n";
-}
-
-// Full error handling would look like this:
-try {
- $weather = $owm->getWeather(-1, $units, $lang);
-} catch (OWMException $e) {
- echo 'OpenWeatherMap exception: ' . $e->getMessage() . ' (Code ' . $e->getCode() . ').';
- echo "<br />\n";
-} catch (\Exception $e) {
- echo 'General exception: ' . $e->getMessage() . ' (Code ' . $e->getCode() . ').';
- echo "<br />\n";
-}
-
-// Example 15: Using an api key:
-$owm->getWeather('Berlin', $units, $lang, 'Your-Api-Key-Here');
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-use Cmfcmf\OpenWeatherMap;
-
-if (file_exists('../vendor/autoload.php')) {
- // Library is not part of a project. "composer install" was executed directly on this library's composer file.
- require('../vendor/autoload.php');
-} else {
- // Library is part of a project.
- /** @noinspection PhpIncludeInspection */
- require('../../../autoload.php');
-}
-
-// Language of data (try your own language here!):
-$lang = 'de';
-
-// Units (can be 'metric' or 'imperial' [default]):
-$units = 'metric';
-
-// Get OpenWeatherMap object. Don't use caching (take a look into Example_Cache.php to see how it works).
-$owm = new OpenWeatherMap();
-
-// Example 1: Get forecast for the next 10 days for Berlin.
-$forecast = $owm->getWeatherForecast('Berlin', $units, $lang, '', 10);
-echo "EXAMPLE 1<hr />\n\n\n";
-
-echo "City: " . $forecast->city->name;
-echo "<br />\n";
-echo "LastUpdate: " . $forecast->lastUpdate->format('d.m.Y H:i');
-echo "<br />\n";
-echo "Sunrise : " . $forecast->sun->rise->format("H:i:s") . " Sunset : " . $forecast->sun->set->format("H:i:s");
-echo "<br />\n";
-echo "<br />\n";
-
-foreach ($forecast as $weather) {
- // Each $weather contains a Cmfcmf\ForecastWeather object which is almost the same as the Cmfcmf\Weather object.
- // Take a look into 'Examples_Current.php' to see the available options.
- echo "Weather forecast at " . $weather->time->day->format('d.m.Y') . " from " . $weather->time->from->format('H:i') . " to " . $weather->time->to->format('H:i');
- echo "<br />\n";
- echo $weather->temperature;
- echo "<br />\n";
- echo "---";
- echo "<br />\n";
-}
-
-// Example 2: Get forecast for the next 3 days for Berlin.
-$forecast = $owm->getWeatherForecast('Berlin', $units, $lang, '', 3);
-echo "EXAMPLE 2<hr />\n\n\n";
-
-foreach ($forecast as $weather) {
- echo "Weather forecast at " . $weather->time->day->format('d.m.Y') . " from " . $weather->time->from->format('H:i') . " to " . $weather->time->to->format('H:i') . "<br />";
- echo $weather->temperature . "<br />\n";
- echo "---<br />\n";
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-use Cmfcmf\OpenWeatherMap;
-
-if (file_exists('../vendor/autoload.php')) {
- // Library is not part of a project. "composer install" was executed directly on this library's composer file.
- require('../vendor/autoload.php');
-} else {
- // Library is part of a project.
- /** @noinspection PhpIncludeInspection */
- require('../../../autoload.php');
-}
-
-// Language of data (try your own language here!):
-$lang = 'en';
-
-// Units (can be 'metric' or 'imperial' [default]):
-$units = 'metric';
-
-// Get OpenWeatherMap object. Don't use caching (take a look into Example_Cache.php to see how it works).
-$owm = new OpenWeatherMap();
-
-// Example 1: Get hourly weather history between 2014-01-01 and today.
-$history = $owm->getWeatherHistory('Berlin', new \DateTime('2014-01-01'), new \DateTime('now'), 'hour', $units, $lang);
-
-foreach ($history as $weather) {
- echo "Average temperature at " . $weather->time->format('d.m.Y H:i') . ": " . $weather->temperature . "\n\r<br />";
-}
+++ /dev/null
-Copyright (c) 2013 Christian Flach
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+++ /dev/null
-OpenWeatherMap-PHP-Api
-======================
-A php api to parse weather data from [OpenWeatherMap.org](http://www.OpenWeatherMap.org). This api tries to normalise and abstract the data and remove inconsistencies.
-
-[![Build Status](https://travis-ci.org/cmfcmf/OpenWeatherMap-PHP-Api.png?branch=master)](https://travis-ci.org/cmfcmf/OpenWeatherMap-PHP-Api)[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/cmfcmf/OpenWeatherMap-PHP-Api/badges/quality-score.png?s=f31ca08aa8896416cf162403d34362f0a5da0966)](https://scrutinizer-ci.com/g/cmfcmf/OpenWeatherMap-PHP-Api/)[![Code Coverage](https://scrutinizer-ci.com/g/cmfcmf/OpenWeatherMap-PHP-Api/badges/coverage.png?s=65153e7cfb13e050d734c645e38f2dd7ea7a6860)](https://scrutinizer-ci.com/g/cmfcmf/OpenWeatherMap-PHP-Api/)
-[![SensioLabsInsight](https://insight.sensiolabs.com/projects/0addfb24-e2b4-4feb-848e-86b2078ca104/big.png)](https://insight.sensiolabs.com/projects/0addfb24-e2b4-4feb-848e-86b2078ca104)
------------
-
-For example code and how to use this api, please take a look into `Examples_*.php` files and run them in your browser.
-- `Examples_Current.php` Shows how to receive the current weather.
-- `Examples_Forecast.php` Shows how to receive weather forecasts.
-- [*NEW*] `Examples_History.php` Shows how to receive weather history.
-- `Examples_Cache.php` Shows how to implement a cache.
-
-**Notice:** This api is not made by OpenWeatherMap, nor their official php api.
-
-Contribute!
-===========
-I'm very happy if you open **pull requests** or **issues** to help making this API **more awesome**.
-
-Installation
-============
-This library can be found on [Packagist](https://packagist.org/packages/cmfcmf/openweathermap-php-api).
-The recommended way to install this is through [composer](http://getcomposer.org).
-
-Edit your `composer.json` and add:
-
-```json
-{
- "require": {
- "cmfcmf/openweathermap-php-api": "~2.0"
- }
-}
-```
-
-And install dependencies:
-
-```bash
-$ curl -sS https://getcomposer.org/installer | php
-$ php composer.phar install
-```
-
-
-Example call
-============
-```php
-<?php
-use Cmfcmf\OpenWeatherMap;
-use Cmfcmf\OpenWeatherMap\Exception as OWMException;
-
-// Must point to composer's autoload file.
-require('vendor/autoload.php');
-
-// Language of data (try your own language here!):
-$lang = 'de';
-
-// Units (can be 'metric' or 'imperial' [default]):
-$units = 'metric';
-
-// Get OpenWeatherMap object. Don't use caching (take a look into Example_Cache.php to see how it works).
-$owm = new OpenWeatherMap();
-
-try {
- $weather = $owm->getWeather('Berlin', $units, $lang);
-} catch(OWMException $e) {
- echo 'OpenWeatherMap exception: ' . $e->getMessage() . ' (Code ' . $e->getCode() . ').';
- echo "<br />\n";
-} catch(\Exception $e) {
- echo 'General exception: ' . $e->getMessage() . ' (Code ' . $e->getCode() . ').';
- echo "<br />\n";
-}
-
-echo $weather->temperature;
-```
-
-License
-=======
-MIT — Please see the [LICENSE file](https://github.com/Cmfcmf/OpenWeatherMap-PHP-Api/blob/master/LICENSE) distributed with this source code for further information regarding copyright and licensing.
-
-**Please check out the following links to read about the usage policies and the license of OpenWeatherMap before using the service.**
-- [OpenWeatherMap.org](http://www.OpenWeatherMap.org)
-- [OpenWeatherMap.org/terms](http://www.OpenWeatherMap.org/terms)
-- [OpenWeatherMap.org/appid](http://www.OpenWeatherMap.org/appid)
+++ /dev/null
-{
- "name": "cmfcmf/openweathermap-php-api",
- "description": "A php api to parse weather data from OpenWeatherMap.org. This api tries to normalise and abstract the data and remove inconsistencies.",
- "keywords": ["weather", "OpenWeatherMap", "weather api"],
- "homepage": "https://github.com/cmfcmf/OpenWeatherMap-PHP-Api",
- "license": "MIT",
- "authors": [
- {
- "name": "Christian Flach (cmfcmf)",
- "email": "cmfcmf.flach@gmail.com",
- "homepage": "http://cmfcmf.github.io",
- "role": "Developer"
- }
- ],
- "support": {
- "issues": "https://github.com/cmfcmf/OpenWeatherMap-PHP-Api/issues",
- "source": "https://github.com/cmfcmf/OpenWeatherMap-PHP-Api.git"
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.7.0"
- },
- "autoload": {
- "psr-0": {
- "Cmfcmf\\": ""
- }
- }
-}
+++ /dev/null
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
- "This file is @generated automatically"
- ],
- "hash": "23a2734069dc5af143bb0e0a09160885",
- "packages": [],
- "packages-dev": [
- {
- "name": "doctrine/instantiator",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3,<8.0-DEV"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://github.com/doctrine/instantiator",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2015-06-14 21:17:01"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "2.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "phpDocumentor": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
- }
- ],
- "time": "2015-02-03 12:10:50"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "phpdocumentor/reflection-docblock": "~2.0",
- "sebastian/comparator": "~1.1"
- },
- "require-dev": {
- "phpspec/phpspec": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Prophecy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2015-04-27 22:15:08"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "2.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/631e365cf26bb2c078683e8d9bcf8bc631ac4d44",
- "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "~1.0",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2015-06-19 07:11:55"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb",
- "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2015-04-02 05:19:05"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
- "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "Text/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2014-01-30 17:20:04"
- },
- {
- "name": "phpunit/php-timer",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d",
- "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2015-06-13 07:35:30"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "1.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
- "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2015-06-19 03:43:16"
- },
- {
- "name": "phpunit/phpunit",
- "version": "4.7.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "e5f851f324f7add846316f39e668e9deac97a103"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e5f851f324f7add846316f39e668e9deac97a103",
- "reference": "e5f851f324f7add846316f39e668e9deac97a103",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "~1.3,>=1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": ">=1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.2",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.7.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2015-06-18 13:33:26"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/92408bb1968a81b3217a6fdf6c1a198da83caa35",
- "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "~1.0,>=1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
- "keywords": [
- "mock",
- "xunit"
- ],
- "time": "2015-06-11 15:55:48"
- },
- {
- "name": "sebastian/comparator",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2015-01-29 16:28:08"
- },
- {
- "name": "sebastian/diff",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "http://www.github.com/sebastianbergmann/diff",
- "keywords": [
- "diff"
- ],
- "time": "2015-02-22 15:13:53"
- },
- {
- "name": "sebastian/environment",
- "version": "1.2.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2015-01-01 10:01:08"
- },
- {
- "name": "sebastian/exporter",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "84839970d05254c73cde183a721c7af13aede943"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
- "reference": "84839970d05254c73cde183a721c7af13aede943",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2015-01-27 07:23:06"
- },
- {
- "name": "sebastian/global-state",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
- "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2014-10-06 09:23:50"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-01-24 09:48:32"
- },
- {
- "name": "sebastian/version",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
- "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-02-24 06:35:25"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.7.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Yaml.git",
- "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/9808e75c609a14f6db02f70fccf4ca4aab53c160",
- "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "~2.7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "time": "2015-06-10 15:30:22"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.3.0"
- },
- "platform-dev": []
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--suppress XmlUnboundNsPrefix -->
-<phpunit bootstrap="./tests/bootstrap.php" colors="true">
-
- <testsuites>
- <testsuite name="cmfcmf/openweathermap-php-api test suite">
- <directory suffix="Test.php">./tests</directory>
- </testsuite>
- </testsuites>
-
- <filter>
- <whitelist>
- <directory>./</directory>
- <exclude>
- <directory suffix="Test.php">./</directory>
- <directory suffix="Interface.php">./</directory>
- <directory>./vendor</directory>
- </exclude>
- </whitelist>
- </filter>
-</phpunit>
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Tests\Fetcher;
-
-use \Cmfcmf\OpenWeatherMap\Fetcher\CurlFetcher;
-
-/**
- * @requires function curl_version
- */
-class CurlFetcherTest extends \PHPUnit_Framework_TestCase
-{
- public function testInvalidUrl()
- {
- $fetcher = new CurlFetcher();
-
- $content = $fetcher->fetch('http://notexisting.example.com');
-
- $this->assertSame(false, $content);
- }
-
- public function testEmptyUrl()
- {
- $fetcher = new CurlFetcher();
-
- $content = $fetcher->fetch('');
-
- $this->assertSame(false, $content);
- }
-
- public function testValidUrl()
- {
- $fetcher = new CurlFetcher();
-
- $content = $fetcher->fetch('http://httpbin.org/html');
-
- $this->assertContains('Herman Melville', $content);
- }
-}
+++ /dev/null
-<?php
-/**
- * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
- *
- * @license MIT
- *
- * Please see the LICENSE file distributed with this source code for further
- * information regarding copyright and licensing.
- *
- * Please visit the following links to read about the usage policies and the license of
- * OpenWeatherMap before using this class:
- *
- * @see http://www.OpenWeatherMap.org
- * @see http://www.OpenWeatherMap.org/terms
- * @see http://openweathermap.org/appid
- */
-
-namespace Cmfcmf\OpenWeatherMap\Tests\Fetcher;
-
-use \Cmfcmf\OpenWeatherMap\Fetcher\FileGetContentsFetcher;
-
-class FileGetContentsFetcherTest extends \PHPUnit_Framework_TestCase
-{
- protected function setUp()
- {
- if (!ini_get('allow_url_fopen')) {
- $this->markTestSkipped('"allow_url_fopen" is set to off.');
- }
- }
-
- /**
- * @expectedException \PHPUnit_Framework_Error_Warning
- */
- public function testInvalidUrl()
- {
- $fetcher = new FileGetContentsFetcher();
-
- $fetcher->fetch('http://notexisting.example.com');
- }
-
- /**
- * @expectedException \PHPUnit_Framework_Error_Warning
- */
- public function testEmptyUrl()
- {
- $fetcher = new FileGetContentsFetcher();
-
- $fetcher->fetch('');
- }
-
- public function testValidUrl()
- {
- $fetcher = new FileGetContentsFetcher();
-
- $content = $fetcher->fetch('http://httpbin.org/html');
-
- $this->assertContains('Herman Melville', $content);
- }
-}
+++ /dev/null
-<?php
-/**
- * Copyright Zikula Foundation 2014 - Zikula Application Framework
- *
- * This work is contributed to the Zikula Foundation under one or more
- * Contributor Agreements and licensed to You under the following license:
- *
- * @license GNU/LGPv3 (or at your option any later version).
- * @package OpenWeatherMap-PHP-Api
- *
- * Please see the NOTICE file distributed with this source code for further
- * information regarding copyright and licensing.
- */
-
-namespace Cmfcmf\OpenWeatherMap\Tests\Util;
-
-use Cmfcmf\OpenWeatherMap\Util\Sun;
-
-class SunTest extends \PHPUnit_Framework_TestCase
-{
- /**
- * @var Sun
- */
- private $sun;
-
- public function testSunRise()
- {
- $rise = new \DateTime('2014-01-01 08:00:00');
- $set = new \DateTime('2014-01-01 20:00:00');
-
- $this->givenThereIsASunObject($rise, $set);
-
- $this->assertSame($rise, $this->sun->rise);
- }
-
- public function testSunSet()
- {
- $rise = new \DateTime('2014-01-01 08:00:00');
- $set = new \DateTime('2014-01-01 20:00:00');
-
- $this->givenThereIsASunObject($rise, $set);
-
- $this->assertSame($set, $this->sun->set);
- }
-
-
- private function givenThereIsASunObject($rise, $set)
- {
- $this->sun = new Sun($rise, $set);
- }
-
- /**
- * @expectedException \LogicException
- */
- public function testSunSetBeforeSunRiseException()
- {
- $rise = new \DateTime('2014-01-01 08:00:00');
- $set = new \DateTime('2014-01-01 7:00:00');
-
- $this->givenThereIsASunObject($rise, $set);
- }
-}
+++ /dev/null
-<?php
-/**
- * Copyright Zikula Foundation 2014 - Zikula Application Framework
- *
- * This work is contributed to the Zikula Foundation under one or more
- * Contributor Agreements and licensed to You under the following license:
- *
- * @license GNU/LGPv3 (or at your option any later version).
- * @package OpenWeatherMap-PHP-Api
- *
- * Please see the NOTICE file distributed with this source code for further
- * information regarding copyright and licensing.
- */
-
-namespace Cmfcmf\OpenWeatherMap\Tests\Util;
-
-use \Cmfcmf\OpenWeatherMap\Util\Unit;
-
-class UnitTest extends \PHPUnit_Framework_TestCase
-{
- /**
- * @var Unit
- */
- private $unit;
-
- const POSITIVE_INT_VALUE = 23;
-
- const POSITIVE_FLOAT_VALUE = 48.23534;
-
- const NEGATIVE_INT_VALUE = -30;
-
- const NEGATIVE_FLOAT_VALUE = -93.45839;
-
- const ZERO_INT_VALUE = 0;
-
- const ZERO_FLOAT_VALUE = 0.0;
-
- public function testGetValueWithPositiveIntValue()
- {
- $this->givenThereIsAUnitWithValue(self::POSITIVE_INT_VALUE);
-
- $this->assertSame((float)self::POSITIVE_INT_VALUE, $this->unit->getValue());
- }
-
- public function testGetValueWithPositiveFloatValue()
- {
- $this->givenThereIsAUnitWithValue(self::POSITIVE_FLOAT_VALUE);
-
- $this->assertSame(self::POSITIVE_FLOAT_VALUE, $this->unit->getValue());
- }
-
- public function testGetValueWithNegativeIntValue()
- {
- $this->givenThereIsAUnitWithValue(self::NEGATIVE_INT_VALUE);
-
- $this->assertSame((float)self::NEGATIVE_INT_VALUE, $this->unit->getValue());
- }
-
- public function testGetValueWithNegativeFloatValue()
- {
- $this->givenThereIsAUnitWithValue(self::NEGATIVE_FLOAT_VALUE);
-
- $this->assertSame(self::NEGATIVE_FLOAT_VALUE, $this->unit->getValue());
- }
-
- public function testGetValueWithZeroIntValue()
- {
- $this->givenThereIsAUnitWithValue(self::ZERO_INT_VALUE);
-
- $this->assertSame((float)self::ZERO_INT_VALUE, $this->unit->getValue());
- }
-
- public function testGetValueWithZeroFloatValue()
- {
- $this->givenThereIsAUnitWithValue(self::ZERO_FLOAT_VALUE);
-
- $this->assertSame(self::ZERO_FLOAT_VALUE, $this->unit->getValue());
- }
-
- private function givenThereIsAUnitWithValue($value, $unit = null)
- {
- $this->unit = $unit === null ? new Unit($value) : new Unit($value, $unit);
- }
-
- public function testGetUnitWithEmptyUnit()
- {
- $this->givenThereIsAUnitWithUnit("");
-
- $this->assertSame("", $this->unit->getUnit());
- }
-
- public function testGetUnitWithStringAsUnit()
- {
- $this->givenThereIsAUnitWithUnit("Hey! I'm cmfcmf");
-
- $this->assertSame("Hey! I'm cmfcmf", $this->unit->getUnit());
- }
-
- public function testCelsiusFixture()
- {
- $this->givenThereIsAUnitWithUnit("celsius");
-
- $this->assertSame("°C", $this->unit->getUnit());
- }
-
- public function testFahrenheitFixture()
- {
- $this->givenThereIsAUnitWithUnit("fahrenheit");
-
- $this->assertSame("F", $this->unit->getUnit());
- }
-
- private function givenThereIsAUnitWithUnit($unit)
- {
- $this->unit = new Unit(0, $unit);
- }
-
- public function testGetDescriptionWithEmptyDescription()
- {
- $this->givenThereIsAUnitWithDescription("");
-
- $this->assertSame("", $this->unit->getDescription());
- }
-
- public function testGetDescriptionWithStringAsDescription()
- {
- $this->givenThereIsAUnitWithDescription("Hey! I'm cmfcmf");
-
- $this->assertSame("Hey! I'm cmfcmf", $this->unit->getDescription());
- }
-
- private function givenThereIsAUnitWithDescription($description)
- {
- $this->unit = new Unit(0, "", $description);
- }
-
- public function testGetFormattedWithoutUnit()
- {
- $this->givenThereIsAUnitWithValue(self::POSITIVE_INT_VALUE);
-
- $this->assertEquals(self::POSITIVE_INT_VALUE, $this->unit->getFormatted());
- $this->assertEquals($this->unit->getValue(), $this->unit->getFormatted());
- }
-
- public function testGetFormattedWithUnit()
- {
- $this->givenThereIsAUnitWithValue(self::POSITIVE_INT_VALUE, 'K');
-
- $this->assertEquals(self::POSITIVE_INT_VALUE . ' K', $this->unit->getFormatted());
- $this->assertEquals($this->unit->getValue() . ' ' . $this->unit->getUnit(), $this->unit->getFormatted());
- }
-
- public function testToString()
- {
- $this->givenThereIsAUnitWithValue(self::POSITIVE_INT_VALUE, 'K');
-
- $this->assertEquals($this->unit->getFormatted(), $this->unit);
- }
-}
+++ /dev/null
-<?php
-
-call_user_func(function () {
- if (!is_file($autoloadFile = __DIR__ . '/../vendor/autoload.php')) {
- throw new \RuntimeException('Did not find vendor/autoload.php. Did you run "composer install --dev"?');
- }
-
- /** @noinspection PhpIncludeInspection */
- require_once $autoloadFile;
-
- ini_set('date.timezone', 'Europe/Berlin');
-});
+++ /dev/null
-<?php
-
-/*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- * Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Composer\Autoload;
-
-/**
- * ClassLoader implements a PSR-0 class loader
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
- *
- * $loader = new \Composer\Autoload\ClassLoader();
- *
- * // register classes with namespaces
- * $loader->add('Symfony\Component', __DIR__.'/component');
- * $loader->add('Symfony', __DIR__.'/framework');
- *
- * // activate the autoloader
- * $loader->register();
- *
- * // to enable searching the include path (eg. for PEAR packages)
- * $loader->setUseIncludePath(true);
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * This class is loosely based on the Symfony UniversalClassLoader.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class ClassLoader
-{
- // PSR-4
- private $prefixLengthsPsr4 = array();
- private $prefixDirsPsr4 = array();
- private $fallbackDirsPsr4 = array();
-
- // PSR-0
- private $prefixesPsr0 = array();
- private $fallbackDirsPsr0 = array();
-
- private $useIncludePath = false;
- private $classMap = array();
-
- private $classMapAuthoritative = false;
-
- public function getPrefixes()
- {
- if (!empty($this->prefixesPsr0)) {
- return call_user_func_array('array_merge', $this->prefixesPsr0);
- }
-
- return array();
- }
-
- public function getPrefixesPsr4()
- {
- return $this->prefixDirsPsr4;
- }
-
- public function getFallbackDirs()
- {
- return $this->fallbackDirsPsr0;
- }
-
- public function getFallbackDirsPsr4()
- {
- return $this->fallbackDirsPsr4;
- }
-
- public function getClassMap()
- {
- return $this->classMap;
- }
-
- /**
- * @param array $classMap Class to filename map
- */
- public function addClassMap(array $classMap)
- {
- if ($this->classMap) {
- $this->classMap = array_merge($this->classMap, $classMap);
- } else {
- $this->classMap = $classMap;
- }
- }
-
- /**
- * Registers a set of PSR-0 directories for a given prefix, either
- * appending or prepending to the ones previously set for this prefix.
- *
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 root directories
- * @param bool $prepend Whether to prepend the directories
- */
- public function add($prefix, $paths, $prepend = false)
- {
- if (!$prefix) {
- if ($prepend) {
- $this->fallbackDirsPsr0 = array_merge(
- (array) $paths,
- $this->fallbackDirsPsr0
- );
- } else {
- $this->fallbackDirsPsr0 = array_merge(
- $this->fallbackDirsPsr0,
- (array) $paths
- );
- }
-
- return;
- }
-
- $first = $prefix[0];
- if (!isset($this->prefixesPsr0[$first][$prefix])) {
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
-
- return;
- }
- if ($prepend) {
- $this->prefixesPsr0[$first][$prefix] = array_merge(
- (array) $paths,
- $this->prefixesPsr0[$first][$prefix]
- );
- } else {
- $this->prefixesPsr0[$first][$prefix] = array_merge(
- $this->prefixesPsr0[$first][$prefix],
- (array) $paths
- );
- }
- }
-
- /**
- * Registers a set of PSR-4 directories for a given namespace, either
- * appending or prepending to the ones previously set for this namespace.
- *
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-0 base directories
- * @param bool $prepend Whether to prepend the directories
- *
- * @throws \InvalidArgumentException
- */
- public function addPsr4($prefix, $paths, $prepend = false)
- {
- if (!$prefix) {
- // Register directories for the root namespace.
- if ($prepend) {
- $this->fallbackDirsPsr4 = array_merge(
- (array) $paths,
- $this->fallbackDirsPsr4
- );
- } else {
- $this->fallbackDirsPsr4 = array_merge(
- $this->fallbackDirsPsr4,
- (array) $paths
- );
- }
- } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
- // Register directories for a new namespace.
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
- }
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
- } elseif ($prepend) {
- // Prepend directories for an already registered namespace.
- $this->prefixDirsPsr4[$prefix] = array_merge(
- (array) $paths,
- $this->prefixDirsPsr4[$prefix]
- );
- } else {
- // Append directories for an already registered namespace.
- $this->prefixDirsPsr4[$prefix] = array_merge(
- $this->prefixDirsPsr4[$prefix],
- (array) $paths
- );
- }
- }
-
- /**
- * Registers a set of PSR-0 directories for a given prefix,
- * replacing any others previously set for this prefix.
- *
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 base directories
- */
- public function set($prefix, $paths)
- {
- if (!$prefix) {
- $this->fallbackDirsPsr0 = (array) $paths;
- } else {
- $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
- }
- }
-
- /**
- * Registers a set of PSR-4 directories for a given namespace,
- * replacing any others previously set for this namespace.
- *
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- *
- * @throws \InvalidArgumentException
- */
- public function setPsr4($prefix, $paths)
- {
- if (!$prefix) {
- $this->fallbackDirsPsr4 = (array) $paths;
- } else {
- $length = strlen($prefix);
- if ('\\' !== $prefix[$length - 1]) {
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
- }
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
- }
- }
-
- /**
- * Turns on searching the include path for class files.
- *
- * @param bool $useIncludePath
- */
- public function setUseIncludePath($useIncludePath)
- {
- $this->useIncludePath = $useIncludePath;
- }
-
- /**
- * Can be used to check if the autoloader uses the include path to check
- * for classes.
- *
- * @return bool
- */
- public function getUseIncludePath()
- {
- return $this->useIncludePath;
- }
-
- /**
- * Turns off searching the prefix and fallback directories for classes
- * that have not been registered with the class map.
- *
- * @param bool $classMapAuthoritative
- */
- public function setClassMapAuthoritative($classMapAuthoritative)
- {
- $this->classMapAuthoritative = $classMapAuthoritative;
- }
-
- /**
- * Should class lookup fail if not found in the current class map?
- *
- * @return bool
- */
- public function isClassMapAuthoritative()
- {
- return $this->classMapAuthoritative;
- }
-
- /**
- * Registers this instance as an autoloader.
- *
- * @param bool $prepend Whether to prepend the autoloader or not
- */
- public function register($prepend = false)
- {
- spl_autoload_register(array($this, 'loadClass'), true, $prepend);
- }
-
- /**
- * Unregisters this instance as an autoloader.
- */
- public function unregister()
- {
- spl_autoload_unregister(array($this, 'loadClass'));
- }
-
- /**
- * Loads the given class or interface.
- *
- * @param string $class The name of the class
- * @return bool|null True if loaded, null otherwise
- */
- public function loadClass($class)
- {
- if ($file = $this->findFile($class)) {
- includeFile($file);
-
- return true;
- }
- }
-
- /**
- * Finds the path to the file where the class is defined.
- *
- * @param string $class The name of the class
- *
- * @return string|false The path if found, false otherwise
- */
- public function findFile($class)
- {
- // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
- if ('\\' == $class[0]) {
- $class = substr($class, 1);
- }
-
- // class map lookup
- if (isset($this->classMap[$class])) {
- return $this->classMap[$class];
- }
- if ($this->classMapAuthoritative) {
- return false;
- }
-
- $file = $this->findFileWithExtension($class, '.php');
-
- // Search for Hack files if we are running on HHVM
- if ($file === null && defined('HHVM_VERSION')) {
- $file = $this->findFileWithExtension($class, '.hh');
- }
-
- if ($file === null) {
- // Remember that this class does not exist.
- return $this->classMap[$class] = false;
- }
-
- return $file;
- }
-
- private function findFileWithExtension($class, $ext)
- {
- // PSR-4 lookup
- $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
-
- $first = $class[0];
- if (isset($this->prefixLengthsPsr4[$first])) {
- foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
- if (0 === strpos($class, $prefix)) {
- foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
- if (is_file($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
- return $file;
- }
- }
- }
- }
- }
-
- // PSR-4 fallback dirs
- foreach ($this->fallbackDirsPsr4 as $dir) {
- if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
- return $file;
- }
- }
-
- // PSR-0 lookup
- if (false !== $pos = strrpos($class, '\\')) {
- // namespaced class name
- $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
- . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
- } else {
- // PEAR-like class name
- $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
- }
-
- if (isset($this->prefixesPsr0[$first])) {
- foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
- if (0 === strpos($class, $prefix)) {
- foreach ($dirs as $dir) {
- if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
- return $file;
- }
- }
- }
- }
- }
-
- // PSR-0 fallback dirs
- foreach ($this->fallbackDirsPsr0 as $dir) {
- if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
- return $file;
- }
- }
-
- // PSR-0 include paths.
- if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
- return $file;
- }
- }
-}
-
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
- include $file;
-}
+++ /dev/null
-<?php
-
-// autoload_classmap.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-);
+++ /dev/null
-<?php
-
-// autoload_namespaces.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
- 'Cmfcmf\\' => array($vendorDir . '/cmfcmf/openweathermap-php-api'),
-);
+++ /dev/null
-<?php
-
-// autoload_psr4.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-);
+++ /dev/null
-<?php
-
-// autoload_real.php @generated by Composer
-
-class ComposerAutoloaderInit6bf0e42f34a65c53928f3dc22e5b93d3
-{
- private static $loader;
-
- public static function loadClassLoader($class)
- {
- if ('Composer\Autoload\ClassLoader' === $class) {
- require __DIR__ . '/ClassLoader.php';
- }
- }
-
- public static function getLoader()
- {
- if (null !== self::$loader) {
- return self::$loader;
- }
-
- spl_autoload_register(array('ComposerAutoloaderInit6bf0e42f34a65c53928f3dc22e5b93d3', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
- spl_autoload_unregister(array('ComposerAutoloaderInit6bf0e42f34a65c53928f3dc22e5b93d3', 'loadClassLoader'));
-
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
-
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
-
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
- }
-
- $loader->register(true);
-
- return $loader;
- }
-}
-
-function composerRequire6bf0e42f34a65c53928f3dc22e5b93d3($file)
-{
- require $file;
-}
+++ /dev/null
-[
- {
- "name": "cmfcmf/openweathermap-php-api",
- "version": "v2.0.7",
- "version_normalized": "2.0.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/cmfcmf/OpenWeatherMap-PHP-Api.git",
- "reference": "ab387ebcad332b1e58be443f760e1235e7976443"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/cmfcmf/OpenWeatherMap-PHP-Api/zipball/ab387ebcad332b1e58be443f760e1235e7976443",
- "reference": "ab387ebcad332b1e58be443f760e1235e7976443",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.7.0"
- },
- "time": "2015-06-23 21:07:37",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "Cmfcmf\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Christian Flach (cmfcmf)",
- "email": "cmfcmf.flach@gmail.com",
- "homepage": "http://cmfcmf.github.io",
- "role": "Developer"
- }
- ],
- "description": "A php api to parse weather data from OpenWeatherMap.org. This api tries to normalise and abstract the data and remove inconsistencies.",
- "homepage": "https://github.com/cmfcmf/OpenWeatherMap-PHP-Api",
- "keywords": [
- "OpenWeatherMap",
- "weather",
- "weather api"
- ]
- }
-]