mirror of
https://github.com/TeamPiped/piped-rust-sdk.git
synced 2024-08-14 23:56:06 +00:00
Add support for search suggestions.
This commit is contained in:
parent
d81633205f
commit
dacbdab7d6
3 changed files with 41 additions and 14 deletions
|
@ -24,3 +24,7 @@ path = "trending.rs"
|
||||||
[[example]]
|
[[example]]
|
||||||
name = "video"
|
name = "video"
|
||||||
path = "video.rs"
|
path = "video.rs"
|
||||||
|
|
||||||
|
[[example]]
|
||||||
|
name = "search_suggestions"
|
||||||
|
path = "search_suggestions.rs"
|
||||||
|
|
21
examples/search_suggestions.rs
Normal file
21
examples/search_suggestions.rs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
use piped::piped::PipedClient;
|
||||||
|
use reqwest::ClientBuilder;
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() {
|
||||||
|
let httpclient = ClientBuilder::new()
|
||||||
|
.user_agent("Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0")
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let instance = "https://pipedapi.kavin.rocks".to_string();
|
||||||
|
|
||||||
|
let client = PipedClient::new(httpclient, instance);
|
||||||
|
|
||||||
|
let suggestions = client
|
||||||
|
.get_search_suggestions("techlore".to_string())
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
println!("{:?}", suggestions);
|
||||||
|
}
|
|
@ -58,13 +58,7 @@ pub mod piped {
|
||||||
.append_pair("url", nexturl.as_str())
|
.append_pair("url", nexturl.as_str())
|
||||||
.append_pair("id", nextbody.as_str());
|
.append_pair("id", nextbody.as_str());
|
||||||
|
|
||||||
let resp = &self
|
let resp = &self.httpclient.get(url).send().await?.text().await?;
|
||||||
.httpclient
|
|
||||||
.get(url.as_str())
|
|
||||||
.send()
|
|
||||||
.await?
|
|
||||||
.text()
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let streams: StreamsPage = serde_json::from_str(resp.as_str())?;
|
let streams: StreamsPage = serde_json::from_str(resp.as_str())?;
|
||||||
|
|
||||||
|
@ -100,13 +94,7 @@ pub mod piped {
|
||||||
.append_pair("url", nexturl.as_str())
|
.append_pair("url", nexturl.as_str())
|
||||||
.append_pair("id", nextbody.as_str());
|
.append_pair("id", nextbody.as_str());
|
||||||
|
|
||||||
let resp = &self
|
let resp = &self.httpclient.get(url).send().await?.text().await?;
|
||||||
.httpclient
|
|
||||||
.get(url.as_str())
|
|
||||||
.send()
|
|
||||||
.await?
|
|
||||||
.text()
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let streams: StreamsPage = serde_json::from_str(resp.as_str())?;
|
let streams: StreamsPage = serde_json::from_str(resp.as_str())?;
|
||||||
|
|
||||||
|
@ -129,6 +117,20 @@ pub mod piped {
|
||||||
|
|
||||||
Ok(video)
|
Ok(video)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn get_search_suggestions(
|
||||||
|
&self,
|
||||||
|
q: String,
|
||||||
|
) -> Result<Vec<String>, Box<dyn std::error::Error>> {
|
||||||
|
let mut url = Url::parse(format!("{}/suggestions", &self.instance).as_str())?;
|
||||||
|
url.query_pairs_mut().append_pair("query", q.as_str());
|
||||||
|
|
||||||
|
let resp = &self.httpclient.get(url).send().await?.text().await?;
|
||||||
|
|
||||||
|
let suggestions: Vec<String> = serde_json::from_str(resp.as_str())?;
|
||||||
|
|
||||||
|
Ok(suggestions)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug)]
|
||||||
|
|
Loading…
Reference in a new issue