mirror of
https://gitlab.com/hladislav/radiobrowser-lib-rust.git
synced 2025-04-29 23:34:12 +00:00
nicer test
This commit is contained in:
parent
681f1c67dc
commit
ea788a7c01
3 changed files with 11 additions and 25 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -1,9 +1,2 @@
|
||||||
/target
|
/target
|
||||||
|
|
||||||
|
|
||||||
# Added by cargo
|
|
||||||
#
|
|
||||||
# already existing elements were commented out
|
|
||||||
|
|
||||||
#/target
|
|
||||||
/Cargo.lock
|
/Cargo.lock
|
||||||
|
|
|
@ -5,7 +5,9 @@ use std::error::Error;
|
||||||
async fn main() -> Result<(), Box<dyn Error>> {
|
async fn main() -> Result<(), Box<dyn Error>> {
|
||||||
let servers = radiobrowser_lib_rust::get_servers().await?;
|
let servers = radiobrowser_lib_rust::get_servers().await?;
|
||||||
println!("Servers: {:?}", servers);
|
println!("Servers: {:?}", servers);
|
||||||
let config: ApiConfig = radiobrowser_lib_rust::get_server_config().await?;
|
for server in servers {
|
||||||
println!("{:#?}", config);
|
let config: ApiConfig = radiobrowser_lib_rust::get_server_config(server).await?;
|
||||||
|
println!("{:#?}", config);
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
23
src/lib.rs
23
src/lib.rs
|
@ -2,6 +2,10 @@ use reqwest;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
|
||||||
|
use async_std_resolver::proto::rr::RecordType;
|
||||||
|
use async_std_resolver::proto::xfer::DnsRequestOptions;
|
||||||
|
use async_std_resolver::{config, resolver};
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
pub struct ApiConfig {
|
pub struct ApiConfig {
|
||||||
pub check_enabled: bool,
|
pub check_enabled: bool,
|
||||||
|
@ -28,10 +32,10 @@ pub struct ApiConfig {
|
||||||
pub language_to_code_filepath: String,
|
pub language_to_code_filepath: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_server_config() -> Result<ApiConfig, Box<dyn Error>> {
|
pub async fn get_server_config<P: AsRef<str>>(server: P) -> Result<ApiConfig, Box<dyn Error>> {
|
||||||
let client = reqwest::Client::new();
|
let client = reqwest::Client::new();
|
||||||
let res = client
|
let res = client
|
||||||
.post("https://de1.api.radio-browser.info/json/config")
|
.post(format!("https://{}/json/config", server.as_ref()))
|
||||||
.send()
|
.send()
|
||||||
.await?
|
.await?
|
||||||
.json::<ApiConfig>()
|
.json::<ApiConfig>()
|
||||||
|
@ -39,10 +43,6 @@ pub async fn get_server_config() -> Result<ApiConfig, Box<dyn Error>> {
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
use async_std_resolver::proto::rr::RecordType;
|
|
||||||
use async_std_resolver::proto::xfer::DnsRequestOptions;
|
|
||||||
use async_std_resolver::{config, resolver};
|
|
||||||
|
|
||||||
pub async fn get_servers() -> Result<Vec<String>, Box<dyn Error>> {
|
pub async fn get_servers() -> Result<Vec<String>, Box<dyn Error>> {
|
||||||
// Construct a new Resolver with default configuration options
|
// Construct a new Resolver with default configuration options
|
||||||
let resolver = resolver(
|
let resolver = resolver(
|
||||||
|
@ -67,16 +67,7 @@ pub async fn get_servers() -> Result<Vec<String>, Box<dyn Error>> {
|
||||||
let list = response
|
let list = response
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|entry| entry.as_srv())
|
.filter_map(|entry| entry.as_srv())
|
||||||
.map(|entry| entry.target().to_string())
|
.map(|entry| entry.target().to_string().trim_matches('.').to_string())
|
||||||
.collect();
|
.collect();
|
||||||
Ok(list)
|
Ok(list)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
#[test]
|
|
||||||
fn it_works() {
|
|
||||||
let result = 2 + 2;
|
|
||||||
assert_eq!(result, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue