ogcapi_processes/
processor.rs1use anyhow::Result;
2use dyn_clone::DynClone;
3
4use ogcapi_types::processes::{Execute, Process, Results, StatusInfo};
5use serde::{Deserialize, Serialize};
6
7#[async_trait::async_trait]
9pub trait Processor: Send + Sync + DynClone {
10 fn id(&self) -> &'static str;
12
13 fn version(&self) -> &'static str;
15
16 fn process(&self) -> Result<Process>;
18
19 async fn execute(&self, execute: Execute) -> Result<ProcessResponseBody>;
21}
22
23dyn_clone::clone_trait_object!(Processor);
24
25#[derive(Debug, Serialize, Deserialize)]
26pub enum ProcessResponseBody {
27 Requested(Vec<u8>),
28 Results(Results),
29 Empty(String),
30 StatusInfo(StatusInfo),
31}