use alloc::vec::Vec;
use openapiv3::*;
pub trait OperationExt {
fn response(&self, status: u16) -> Option<&Response>;
fn required_parameters(&self) -> Vec<&Parameter>;
fn optional_parameters(&self) -> Vec<&Parameter>;
}
impl OperationExt for Operation {
fn response(&self, status: u16) -> Option<&Response> {
let status_code = StatusCode::Code(status);
self.responses
.responses
.get(&status_code)
.and_then(|ref_or_item| ref_or_item.as_item())
}
fn required_parameters(&self) -> Vec<&Parameter> {
self.parameters
.iter()
.filter_map(|p| p.as_item())
.filter(|p| p.parameter_data_ref().required)
.collect()
}
fn optional_parameters(&self) -> Vec<&Parameter> {
self.parameters
.iter()
.filter_map(|p| p.as_item())
.filter(|p| !p.parameter_data_ref().required)
.collect()
}
}