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
# Added by cargo
#
# already existing elements were commented out
#/target
/Cargo.lock

View file

@ -5,7 +5,9 @@ use std::error::Error;
async fn main() -> Result<(), Box<dyn Error>> {
let servers = radiobrowser_lib_rust::get_servers().await?;
println!("Servers: {:?}", servers);
let config: ApiConfig = radiobrowser_lib_rust::get_server_config().await?;
println!("{:#?}", config);
for server in servers {
let config: ApiConfig = radiobrowser_lib_rust::get_server_config(server).await?;
println!("{:#?}", config);
}
Ok(())
}

View file

@ -2,6 +2,10 @@ use reqwest;
use serde::Deserialize;
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)]
pub struct ApiConfig {
pub check_enabled: bool,
@ -28,10 +32,10 @@ pub struct ApiConfig {
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 res = client
.post("https://de1.api.radio-browser.info/json/config")
.post(format!("https://{}/json/config", server.as_ref()))
.send()
.await?
.json::<ApiConfig>()
@ -39,10 +43,6 @@ pub async fn get_server_config() -> Result<ApiConfig, Box<dyn Error>> {
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>> {
// Construct a new Resolver with default configuration options
let resolver = resolver(
@ -67,16 +67,7 @@ pub async fn get_servers() -> Result<Vec<String>, Box<dyn Error>> {
let list = response
.iter()
.filter_map(|entry| entry.as_srv())
.map(|entry| entry.target().to_string())
.map(|entry| entry.target().to_string().trim_matches('.').to_string())
.collect();
Ok(list)
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
let result = 2 + 2;
assert_eq!(result, 4);
}
}