#[cfg(feature = "pyo3")]
use crate::{query::ImageQueryBuilder, qvf::QvfFilename, DEA};
#[cfg(feature = "pyo3")]
use pyo3::prelude::*;
#[cfg(feature = "pyo3")]
use pyo3::Bound;
#[cfg(feature = "pyo3")]
use std::path::PathBuf;
#[cfg(test)]
mod tests {
}
#[cfg(feature = "pyo3")]
use anyhow::{bail, Result};
#[cfg(feature = "pyo3")]
#[pyfunction]
pub fn get_s2_cloudless_dea(in_qvf_fn: &str, out_qvf_name: &str) -> Result<()> {
let in_qvf_fn: QvfFilename = in_qvf_fn.parse().unwrap();
let source = DEA.clone();
let query = ImageQueryBuilder::from_qvf(in_qvf_fn, source, ["oa_s2cloudless_mask"]).expect("Invalid query");
let dst = PathBuf::from(".");
let q = query
.get(&dst, None, None)
.expect("Unable to download file");
if !q.items.is_empty() {
let asset = &q.items[0].assets["oa_s2cloudless_mask"].href;
std::fs::rename(asset, dst.join(out_qvf_name)).expect("Could not create out file");
std::fs::remove_dir_all(PathBuf::from(&asset).parent().unwrap())
.expect("Unable to remove folder");
} else {
bail!("No image found.");
}
Ok(())
}
#[cfg(feature = "pyo3")]
#[pymodule]
fn rss_core(_py: Python, m: Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(get_s2_cloudless_dea, &m)?)?;
Ok(())
}