fix: format undefined fields

This commit is contained in:
2018-11-02 16:31:25 -07:00
parent d55039f7cb
commit 024a43e20b

View File

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