nicer test

This commit is contained in:
Alex 2022-04-19 02:03:53 +02:00
parent 681f1c67dc
commit ea788a7c01
3 changed files with 11 additions and 25 deletions

7
.gitignore vendored
View file

@ -1,9 +1,2 @@
/target /target
# Added by cargo
#
# already existing elements were commented out
#/target
/Cargo.lock /Cargo.lock

View file

@ -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(())
} }

View file

@ -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);
}
}