mod from_data_impls;
mod from_form_multi_param_impls;
mod from_form_param_impls;
mod from_param_impls;
mod from_request_impls;
mod from_segments_impls;
use super::gen::OpenApiGenerator;
use super::Result;
use revolt_okapi::openapi3::{
Parameter, RequestBody, Responses, SecurityRequirement, SecurityScheme,
};
pub use from_form_multi_param_impls::get_nested_form_parameters;
pub trait OpenApiFromData<'r>: rocket::data::FromData<'r> {
fn request_body(gen: &mut OpenApiGenerator) -> Result<RequestBody>;
}
pub trait OpenApiFromParam<'r>: rocket::request::FromParam<'r> {
fn path_parameter(gen: &mut OpenApiGenerator, name: String) -> Result<Parameter>;
}
pub trait OpenApiFromSegments<'r>: rocket::request::FromSegments<'r> {
fn path_multi_parameter(gen: &mut OpenApiGenerator, name: String) -> Result<Parameter>;
}
pub trait OpenApiFromFormField<'r>: rocket::form::FromFormField<'r> {
fn form_parameter(
gen: &mut OpenApiGenerator,
name: String,
required: bool,
) -> Result<Parameter>;
}
pub trait OpenApiFromForm<'r>: rocket::form::FromForm<'r> {
fn form_multi_parameter(
gen: &mut OpenApiGenerator,
name: String,
required: bool,
) -> Result<Vec<Parameter>>;
}
#[allow(clippy::large_enum_variant)]
pub enum RequestHeaderInput {
None,
Parameter(Parameter),
Security(String, SecurityScheme, SecurityRequirement),
}
pub use revolt_rocket_okapi_codegen::OpenApiFromRequest;
pub trait OpenApiFromRequest<'a>: rocket::request::FromRequest<'a> {
fn from_request_input(
gen: &mut OpenApiGenerator,
name: String,
required: bool,
) -> Result<RequestHeaderInput>;
fn get_responses(_gen: &mut OpenApiGenerator) -> Result<Responses> {
Ok(Responses::default())
}
}