Skip to main content

ogcapi_processes/
processor.rs

1use anyhow::Result;
2use dyn_clone::DynClone;
3
4use ogcapi_types::processes::{Execute, Process, Results, StatusInfo};
5use serde::{Deserialize, Serialize};
6
7/// Trait for defining and executing a [Process]
8#[async_trait::async_trait]
9pub trait Processor: Send + Sync + DynClone {
10    /// Returns the process id (must be unique)
11    fn id(&self) -> &'static str;
12
13    /// Returns the process version
14    fn version(&self) -> &'static str;
15
16    /// Returns the Process description
17    fn process(&self) -> Result<Process>;
18
19    /// Executes the Process and returns [Results]
20    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}