use reqwest;
use crate::{client, RipestatClientError};
use ripestat_common::{RipeStatDataType, RipeStatResponse};
use ripestat_common::RisPrefixesRequest;
pub async fn ris_prefixes(request: RisPrefixesRequest, client: &client::Client) -> Result<RipeStatResponse, RipestatClientError> {
let data_type = RipeStatDataType::RisPrefixes;
let url = data_type.url();
let url_string = url.as_str();
let mut param_vec: Vec<(String, String)> = vec![
("resource".to_owned(), request.resource)
];
if let Some(v) = request.query_time {
param_vec.push(("query_time".to_owned(), v));
}
if let Some(v) = request.list_prefixes {
param_vec.push(("list_prefixes".to_owned(), v.to_string()));
}
if let Some(v) = request.types {
param_vec.push(("types".to_owned(), v));
}
if let Some(v) = request.af {
param_vec.push(("af".to_owned(), v));
}
if let Some(v) = request.noise {
param_vec.push(("noise".to_owned(), v));
}
let params = param_vec.iter();
let request_uri = reqwest::Url::parse_with_params(url_string, params)?;
let wrapped_response = client::wrapped_request(request_uri, &client).await?;
let ripe_stat_response: RipeStatResponse = serde_json::from_str(&wrapped_response.text)?;
Ok(ripe_stat_response)
}