use crate::{client::WitClient, errors::Error};
use reqwest::Method;
use serde::Deserialize;
use serde_json::Value;
#[derive(Debug, Deserialize, PartialEq)]
pub struct LanguageResponse {
pub detected_locales: Vec<Locale>,
}
#[derive(Debug, Deserialize, PartialEq)]
pub struct Locale {
pub locale: String,
pub confidence: f64,
}
impl WitClient {
pub async fn language(&self, query: String, limit: u16) -> Result<LanguageResponse, Error> {
if !(1..=8).contains(&limit) {
return Err(Error::InvalidArgument(format!(
"limit must be between 1 and 8 inclusive, got {limit}",
)));
}
let mut url_params = Vec::new();
url_params.push((String::from("q"), query));
url_params.push((String::from("n"), limit.to_string()));
self.make_request(Method::GET, "/language", url_params, Option::<Value>::None)
.await
}
}