use crate::execution::RunStats;
use crate::http::BodyFormat;
pub mod configure_template;
pub mod method;
pub mod run;
pub use method::HttpMethod;
pub use configure_template::ConfigureTemplateCommand;
#[allow(async_fn_in_trait)]
pub trait Command {
async fn execute(self) -> Result<Option<RunStats>, Box<dyn std::error::Error>>;
}
pub enum Body {
Formatted { content: String, format: BodyFormat },
}
impl From<Body> for String {
fn from(body: Body) -> String {
match body {
Body::Formatted { content, format: _ } => content,
}
}
}
pub enum Commands {
Run(run::RunCommand),
ConfigureRequest(ConfigureTemplateCommand),
ConfigureResponse(ConfigureTemplateCommand),
}
impl Command for Commands {
async fn execute(self) -> Result<Option<RunStats>, Box<dyn std::error::Error>> {
match self {
Commands::Run(cmd) => cmd.execute().await,
Commands::ConfigureRequest(cmd) => cmd.execute().await,
Commands::ConfigureResponse(cmd) => cmd.execute().await,
}
}
}