2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-04-21 18:56:01 +00:00
|
|
|
use chrono::DateTime;
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-04-21 18:56:01 +00:00
|
|
|
use chrono::Utc;
|
2022-05-06 21:18:52 +00:00
|
|
|
use serde::Deserialize;
|
2024-12-04 21:06:17 +00:00
|
|
|
use serde::Serialize;
|
2022-05-06 21:18:52 +00:00
|
|
|
|
|
|
|
/// Radiobrowser status and statistical information of single server.
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiStatus {
|
|
|
|
pub supported_version: u32,
|
|
|
|
pub software_version: Option<String>,
|
|
|
|
pub status: String,
|
|
|
|
pub stations: u64,
|
|
|
|
pub stations_broken: u64,
|
|
|
|
pub tags: u64,
|
|
|
|
pub clicks_last_hour: u64,
|
|
|
|
pub clicks_last_day: u64,
|
|
|
|
pub languages: u64,
|
|
|
|
pub countries: u64,
|
|
|
|
}
|
|
|
|
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiStationAddResult {
|
|
|
|
pub ok: bool,
|
|
|
|
pub message: String,
|
|
|
|
pub uuid: String,
|
|
|
|
}
|
2022-04-21 18:56:01 +00:00
|
|
|
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiStationVoteResult {
|
|
|
|
pub ok: bool,
|
|
|
|
pub message: String,
|
|
|
|
}
|
|
|
|
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiStationClickResult {
|
|
|
|
pub ok: bool,
|
|
|
|
pub message: String,
|
|
|
|
}
|
|
|
|
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiCodec {
|
|
|
|
name: String,
|
|
|
|
stationcount: u64,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// A single station entry
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Deserialize, Serialize, Debug, Clone)]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub struct ApiStation {
|
|
|
|
pub changeuuid: String,
|
|
|
|
pub stationuuid: String,
|
|
|
|
pub serveruuid: Option<String>,
|
|
|
|
pub name: String,
|
|
|
|
pub url: String,
|
|
|
|
pub url_resolved: String,
|
|
|
|
pub homepage: String,
|
|
|
|
pub favicon: String,
|
|
|
|
pub tags: String,
|
|
|
|
pub country: String,
|
|
|
|
pub countrycode: String,
|
|
|
|
pub iso_3166_2: Option<String>,
|
|
|
|
pub state: String,
|
|
|
|
pub language: String,
|
|
|
|
pub languagecodes: Option<String>,
|
|
|
|
pub votes: i32,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub lastchangetime_iso8601: Option<DateTime<Utc>>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub lastchangetime_iso8601: Option<String>,
|
2022-04-21 18:56:01 +00:00
|
|
|
pub codec: String,
|
|
|
|
pub bitrate: u32,
|
|
|
|
pub hls: i8,
|
|
|
|
pub lastcheckok: i8,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub lastchecktime_iso8601: Option<DateTime<Utc>>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub lastcheckoktime_iso8601: Option<DateTime<Utc>>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub lastlocalchecktime_iso8601: Option<DateTime<Utc>>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub clicktimestamp_iso8601: Option<DateTime<Utc>>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub lastchecktime_iso8601: Option<String>,
|
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub lastcheckoktime_iso8601: Option<String>,
|
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub lastlocalchecktime_iso8601: Option<String>,
|
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub clicktimestamp_iso8601: Option<String>,
|
2022-04-21 18:56:01 +00:00
|
|
|
pub clickcount: u32,
|
|
|
|
pub clicktrend: i32,
|
|
|
|
pub ssl_error: Option<u8>,
|
|
|
|
pub geo_lat: Option<f64>,
|
|
|
|
pub geo_long: Option<f64>,
|
|
|
|
pub has_extended_info: Option<bool>,
|
|
|
|
}
|
|
|
|
|
2022-05-06 21:18:52 +00:00
|
|
|
/// A single historical entry for a station
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiStationHistory {
|
|
|
|
pub changeuuid: String,
|
|
|
|
pub stationuuid: String,
|
|
|
|
pub name: String,
|
|
|
|
pub url: String,
|
|
|
|
pub homepage: String,
|
|
|
|
pub favicon: String,
|
|
|
|
pub tags: String,
|
|
|
|
pub country: String,
|
|
|
|
pub countrycode: String,
|
|
|
|
pub state: String,
|
|
|
|
pub language: String,
|
|
|
|
pub languagecodes: Option<String>,
|
|
|
|
pub votes: i32,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub lastchangetime_iso8601: Option<DateTime<Utc>>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub lastchangetime_iso8601: Option<String>,
|
2022-05-06 21:18:52 +00:00
|
|
|
pub geo_lat: Option<f64>,
|
|
|
|
pub geo_long: Option<f64>,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// A click event for a station
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiStationClick {
|
|
|
|
pub stationuuid: String,
|
|
|
|
pub clickuuid: String,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub clicktimestamp_iso8601: Option<DateTime<Utc>>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub clicktimestamp_iso8601: Option<String>,
|
2022-05-06 21:18:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/// A single step of a check action for a station
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub struct ApiStationCheckStep {
|
|
|
|
pub stepuuid: String,
|
|
|
|
pub parent_stepuuid: Option<String>,
|
|
|
|
pub checkuuid: String,
|
|
|
|
pub stationuuid: String,
|
|
|
|
pub url: String,
|
|
|
|
pub urltype: Option<String>,
|
|
|
|
pub error: Option<String>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(feature = "chrono")]
|
2022-05-06 21:18:52 +00:00
|
|
|
pub creation_iso8601: DateTime<Utc>,
|
2022-05-12 20:42:44 +00:00
|
|
|
#[cfg(not(feature = "chrono"))]
|
|
|
|
pub creation_iso8601: String,
|
2022-05-06 21:18:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/// A single country
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub struct ApiCountry {
|
|
|
|
pub name: String,
|
|
|
|
pub iso_3166_1: String,
|
|
|
|
pub stationcount: u32,
|
|
|
|
}
|
|
|
|
|
2022-05-06 21:18:52 +00:00
|
|
|
/// A single language
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub struct ApiLanguage {
|
|
|
|
pub name: String,
|
|
|
|
pub iso_639: Option<String>,
|
|
|
|
pub stationcount: u32,
|
|
|
|
}
|
|
|
|
|
2022-05-06 21:18:52 +00:00
|
|
|
/// A single tag
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-04-21 20:47:23 +00:00
|
|
|
pub struct ApiTag {
|
|
|
|
pub name: String,
|
|
|
|
pub stationcount: u32,
|
|
|
|
}
|
|
|
|
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub struct ApiStreamingServer {
|
|
|
|
pub uuid: String,
|
|
|
|
pub url: String,
|
|
|
|
pub statusurl: Option<String>,
|
|
|
|
pub status: Option<String>,
|
|
|
|
pub error: Option<String>,
|
|
|
|
}
|
|
|
|
|
2024-12-04 21:06:17 +00:00
|
|
|
#[derive(PartialEq, Eq, Deserialize, Serialize, Debug, Clone)]
|
2022-04-21 18:56:01 +00:00
|
|
|
pub struct ApiConfig {
|
|
|
|
pub check_enabled: bool,
|
|
|
|
pub prometheus_exporter_enabled: bool,
|
|
|
|
pub pull_servers: Vec<String>,
|
|
|
|
pub tcp_timeout_seconds: u32,
|
|
|
|
pub broken_stations_never_working_timeout_seconds: u32,
|
|
|
|
pub broken_stations_timeout_seconds: u32,
|
|
|
|
pub checks_timeout_seconds: u32,
|
|
|
|
pub click_valid_timeout_seconds: u32,
|
|
|
|
pub clicks_timeout_seconds: u32,
|
|
|
|
pub mirror_pull_interval_seconds: u32,
|
|
|
|
pub update_caches_interval_seconds: u32,
|
|
|
|
pub server_name: String,
|
|
|
|
pub server_location: String,
|
|
|
|
pub server_country_code: String,
|
|
|
|
pub check_retries: u32,
|
|
|
|
pub check_batchsize: u32,
|
|
|
|
pub check_pause_seconds: u32,
|
|
|
|
pub api_threads: u32,
|
|
|
|
pub cache_type: String,
|
|
|
|
pub cache_ttl: u32,
|
|
|
|
pub language_replace_filepath: String,
|
|
|
|
pub language_to_code_filepath: String,
|
2022-05-06 21:18:52 +00:00
|
|
|
}
|