1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
//! Parses the JSON returned by the [ADS-B Exchange
//! API](https://www.adsbexchange.com/data/).
//!
//! This crate currently only supports v2 of the API.
//!
//! To parse a v2 JSON response:
//!
//! ```
//! use adsbx_json::v2::Response;
//! use std::str::FromStr;
//!
//! # let json_str = include_str!("../tests/v2-specimen-nearby.json");
//! let response = Response::from_str(&json_str).unwrap();
//! println!("Got {} aircraft", response.aircraft.len());
//! let ac = &response.aircraft[0];
//! println!("ICAO: {}", ac.hex);
//! if let Some(reg) = &ac.registration {
//! println!("Registration: {}", reg);
//! }
//! if let (Some(lat), Some(lon)) = (ac.lat, ac.lon) {
//! println!("Aircraft is at {}, {}", lat, lon);
//! }
//! ```
use std::{error::Error, fmt, num::ParseIntError};
pub mod v2;
/// Represents a parsing error.
#[derive(Debug, Clone)]
pub struct ParseError(String);
impl fmt::Display for ParseError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.0)
}
}
impl Error for ParseError {}
impl From<serde_json::Error> for ParseError
where
serde_json::Error: std::fmt::Debug,
{
fn from(error: serde_json::Error) -> Self {
ParseError(format!("{:?}", error))
}
}
impl From<ParseIntError> for ParseError
where
serde_json::Error: std::fmt::Debug,
{
fn from(error: ParseIntError) -> Self {
ParseError(format!("{:?}", error))
}
}