phpvms/app/Services/Metar/AviationWeather.php
lordwilbur ba8a819c7d - fixed an error on finance in admin panel
- flight ident now use this format: VA IATA(if empty ICAO) + Flight Number + - + Flight Code (without C) + - + Flight Leg (without L)
- added function __trans_choice in helpers.php for translation
- fixed error in flight edit/insert panel not showing/inserting Tuesday in days
- fixed an error occurring when metar retrieved is empty
- edited now-ui-kit.css to align login fields correctly
- added /public/assets/frontend/js/core/jquery-3.3.1.min.js to fix a missed resource error in authentication pages
- added translations file for en and it locales
- translated all the frontend templates
2018-05-21 09:53:08 -05:00

49 lines
1.3 KiB
PHP

<?php
namespace App\Services\Metar;
use App\Interfaces\Metar;
use App\Support\Http;
use Cache;
/**
* Return the raw METAR string from the NOAA Aviation Weather Service
* @package App\Services\Metar
*/
class AviationWeather extends Metar
{
private const METAR_URL =
'https://www.aviationweather.gov/adds/dataserver_current/httpparam?'
.'dataSource=metars&requestType=retrieve&format=xml&hoursBeforeNow=3'
.'&mostRecent=true&fields=raw_text&stationString=';
/**
* Implement the METAR - Return the string
* @param $icao
* @return string
*/
protected function metar($icao): string
{
$metar = Cache::remember(
config('cache.keys.WEATHER_LOOKUP.key').$icao,
config('cache.keys.WEATHER_LOOKUP.time'),
function () use ($icao) {
$url = static::METAR_URL.$icao;
try {
$res = Http::get($url, []);
$xml = simplexml_load_string($res);
if (count($xml->data->METAR->raw_text) == 0)
return '';
else
return $xml->data->METAR->raw_text->__toString();
} catch (\Exception $e) {
return '';
}
}
);
return $metar;
}
}