cta-api/src/models/mod.rs

35 lines
704 B
Rust

pub mod eta;
pub mod follow;
pub mod route;
pub mod train;
use crate::Error;
use serde::Deserialize;
#[derive(Debug, Deserialize, Clone)]
pub struct Ctatt {
pub tmst: String,
#[serde(rename = "errCd")]
pub err_cd: String,
#[serde(rename = "errNm")]
pub err_nm: Option<String>,
}
pub trait CTAResponse {
fn get_header(&self) -> Ctatt;
fn check_error(&self) -> Result<(), Error> {
let header = self.get_header();
if let Some(err_number) = header.err_nm {
Err(Error::CtaError(err_number, header.err_cd))
} else {
Ok(())
}
}
}
#[derive(Debug, Deserialize)]
pub struct Response<T: CTAResponse> {
pub ctatt: T,
}