diff --git a/src/lib/get-data.mjs b/src/lib/get-data.mjs index d88b8b1..9fceaff 100644 --- a/src/lib/get-data.mjs +++ b/src/lib/get-data.mjs @@ -1,5 +1,11 @@ import fetch from './fetch.mjs'; +const formatNumber = str => str && Number(`${str}`.replace(/[^0-9.-]/, '')); +const formatString = str => { + if (typeof str !== 'string') return str; + return str && str.length && str !== 'undefined' ? str.trim() : 'N/A'; +}; + export async function getOpenskyData() { const positionSourceMap = ['ADS-B', 'ASTERIX', 'MLAT']; const res = await fetch.get(`https://opensky-network.org/api/states/all`); @@ -25,15 +31,14 @@ export async function getOpenskyData() { export async function getAdbsExchangeData({ lat, lon, radius }) { const positionSourceMap = ['Unknown', 'Mode-S', 'ADS-B', 'ADS-B', 'ADS-B', 'ADS-B']; - const formatNumber = str => str && Number(`${str}`.replace(/[^0-9.-]/, '')); const res = await fetch.get( `http://public-api.adsbexchange.com/VirtualRadar/AircraftList.json?lat=${lat}&lng=${lon}&fDstL=0&fDstU=${radius}` ); return res.data.acList.map(rec => ({ - transponder: `${rec.Icao}`.toLowerCase(), - callsign: `${rec.Call}`.trim(), + transponder: formatString(`${rec.Icao}`.toLowerCase()), + callsign: formatString(rec.Call), origin_country: rec.Cou, time_position: new Date(rec.PosTime), last_contact: new Date(rec.PosTime), @@ -48,10 +53,10 @@ export async function getAdbsExchangeData({ lat, lon, radius }) { squawk: rec.Sqk, spi: false, position_source: positionSourceMap[rec.Trt], - operator: rec.Op, - aircraft: rec.Mdl, - aircraft_manufacturer: rec.Man, - from: rec.From, - to: rec.To, + operator: formatString(rec.Op), + aircraft: formatString(rec.Mdl), + aircraft_manufacturer: formatString(rec.Man), + from: formatString(rec.From), + to: formatString(rec.To), })); }