69 lines
1.7 KiB
Rust
69 lines
1.7 KiB
Rust
use log::info;
|
|
use notmuch::ThreadSet;
|
|
use seed::{prelude::*, 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,
|
|
) -> fetch::Result<shared::SearchResult> {
|
|
Request::new(search(query, page, results_per_page))
|
|
.method(Method::Get)
|
|
.fetch()
|
|
.await?
|
|
.check_status()?
|
|
.json()
|
|
.await
|
|
}
|
|
|
|
pub async fn refresh_request() -> fetch::Result<()> {
|
|
let t = Request::new(refresh())
|
|
.method(Method::Get)
|
|
.fetch()
|
|
.await?
|
|
.check_status()?
|
|
.text()
|
|
.await?;
|
|
info!("refresh {t}");
|
|
Ok(())
|
|
}
|
|
|
|
pub async fn show_pretty_request(tid: &str) -> fetch::Result<ThreadSet> {
|
|
Request::new(show_pretty(tid))
|
|
.method(Method::Get)
|
|
.fetch()
|
|
.await?
|
|
.check_status()?
|
|
.json()
|
|
.await
|
|
}
|