use crate::errors::KeywordNotSet;
use crate::request_handler::Query;
use crate::Client;
use serde_json::Value;
#[derive(Clone, Debug, Default)]
pub struct RelatedTopics {
pub client: Client,
}
impl RelatedTopics {
pub fn new(client: Client) -> Self {
Self { client }
}
pub fn get(&self) -> Value {
let value = self
.send_request()
.into_iter()
.map(|x| x.to_string())
.collect::<Vec<String>>();
let joined = value.join(",");
let form: String = format!("[{}]", joined);
serde_json::from_str(form.as_str()).unwrap()
}
pub fn top(&self) -> Value {
self.get()[0].clone()
}
pub fn rising(&self) -> Value {
self.get()[1].clone()
}
pub fn get_for(&self, keyword: &str) -> Value {
let index = self
.client
.keywords
.keywords
.iter()
.position(|&x| x == keyword);
let keyword_index = match index {
Some(k) => k,
None => Err(KeywordNotSet).unwrap(),
};
self.send_request()[keyword_index].clone()
}
}