web_extensions/
downloads.rs1use crate::{util::*, Error};
4use serde::{Deserialize, Serialize};
5use std::path::PathBuf;
6use web_extensions_sys as sys;
7
8pub async fn search(query: &Query<'_>) -> Result<Vec<DownloadItem>, Error> {
10 let js_query = js_from_serde(query)?;
11 let js_value = sys::chrome().downloads().search(&js_query).await?;
12 serde_from_js(js_value)
13}
14
15#[derive(Debug, Clone, Serialize)]
17#[serde(rename_all = "camelCase")]
18pub struct Query<'a> {
19 pub query: Option<Vec<&'a str>>,
20 pub start_time: Option<&'a str>,
21}
22
23impl<'a> From<&'a str> for Query<'a> {
24 fn from(q: &'a str) -> Self {
25 Self {
26 query: Some(vec![q]),
27 start_time: None,
28 }
29 }
30}
31
32#[derive(Debug, Clone, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct DownloadItem {
36 pub filename: PathBuf,
37 pub mime: String,
38 pub start_time: String,
39 pub url: String,
40}