56 lines
1.5 KiB
Rust
56 lines
1.5 KiB
Rust
use gloo_net::{http::Request, Error};
|
|
use log::info;
|
|
use notmuch::ThreadSet;
|
|
use seed::Url;
|
|
|
|
const BASE_URL: &str = "/api";
|
|
pub fn refresh() -> String {
|
|
format!("{BASE_URL}/refresh")
|
|
}
|
|
pub fn search(query: &str, page: usize, results_per_page: usize) -> String {
|
|
let query = Url::encode_uri_component(query);
|
|
format!("{BASE_URL}/search/{query}?page={page}&results_per_page={results_per_page}")
|
|
}
|
|
pub fn show_pretty(tid: &str) -> String {
|
|
format!("{BASE_URL}/show/{tid}/pretty")
|
|
}
|
|
pub fn original(message_id: &str) -> String {
|
|
format!("{BASE_URL}/original/{message_id}")
|
|
}
|
|
pub mod urls {
|
|
use seed::Url;
|
|
pub fn search(query: &str, page: usize) -> Url {
|
|
let query = Url::encode_uri_component(query);
|
|
if page > 0 {
|
|
Url::new().set_hash_path(["s", &query, &format!("p{page}")])
|
|
} else {
|
|
Url::new().set_hash_path(["s", &query])
|
|
}
|
|
}
|
|
pub fn thread(tid: &str) -> Url {
|
|
Url::new().set_hash_path(["t", tid])
|
|
}
|
|
}
|
|
|
|
pub async fn search_request(
|
|
query: &str,
|
|
page: usize,
|
|
results_per_page: usize,
|
|
) -> Result<shared::SearchResult, Error> {
|
|
Request::get(&search(query, page, results_per_page))
|
|
.send()
|
|
.await?
|
|
.json()
|
|
.await
|
|
}
|
|
|
|
pub async fn refresh_request() -> Result<(), Error> {
|
|
let t = Request::get(&refresh()).send().await?.text().await?;
|
|
info!("refresh {t}");
|
|
Ok(())
|
|
}
|
|
|
|
pub async fn show_pretty_request(tid: &str) -> Result<ThreadSet, Error> {
|
|
Request::get(&show_pretty(tid)).send().await?.json().await
|
|
}
|