forked from jmug/stoatchat
chore: update everything to work with utoipa
This commit is contained in:
@@ -43,45 +43,45 @@ impl IdempotencyKey {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "rocket-impl")]
|
||||
use revolt_rocket_okapi::{
|
||||
gen::OpenApiGenerator,
|
||||
request::{OpenApiFromRequest, RequestHeaderInput},
|
||||
revolt_okapi::openapi3::{Parameter, ParameterValue},
|
||||
};
|
||||
// #[cfg(feature = "rocket-impl")]
|
||||
// use revolt_rocket_okapi::{
|
||||
// gen::OpenApiGenerator,
|
||||
// request::{OpenApiFromRequest, RequestHeaderInput},
|
||||
// revolt_okapi::openapi3::{Parameter, ParameterValue},
|
||||
// };
|
||||
|
||||
#[cfg(feature = "rocket-impl")]
|
||||
use schemars::schema::{InstanceType, SchemaObject, SingleOrVec};
|
||||
// #[cfg(feature = "rocket-impl")]
|
||||
// use schemars::schema::{InstanceType, SchemaObject, SingleOrVec};
|
||||
|
||||
#[cfg(feature = "rocket-impl")]
|
||||
impl OpenApiFromRequest<'_> for IdempotencyKey {
|
||||
fn from_request_input(
|
||||
_gen: &mut OpenApiGenerator,
|
||||
_name: String,
|
||||
_required: bool,
|
||||
) -> revolt_rocket_okapi::Result<RequestHeaderInput> {
|
||||
Ok(RequestHeaderInput::Parameter(Parameter {
|
||||
name: "Idempotency-Key".to_string(),
|
||||
description: Some("Unique key to prevent duplicate requests".to_string()),
|
||||
allow_empty_value: false,
|
||||
required: false,
|
||||
deprecated: false,
|
||||
extensions: schemars::Map::new(),
|
||||
location: "header".to_string(),
|
||||
value: ParameterValue::Schema {
|
||||
allow_reserved: false,
|
||||
example: None,
|
||||
examples: None,
|
||||
explode: None,
|
||||
style: None,
|
||||
schema: SchemaObject {
|
||||
instance_type: Some(SingleOrVec::Single(Box::new(InstanceType::String))),
|
||||
..Default::default()
|
||||
},
|
||||
},
|
||||
}))
|
||||
}
|
||||
}
|
||||
// #[cfg(feature = "rocket-impl")]
|
||||
// impl OpenApiFromRequest<'_> for IdempotencyKey {
|
||||
// fn from_request_input(
|
||||
// _gen: &mut OpenApiGenerator,
|
||||
// _name: String,
|
||||
// _required: bool,
|
||||
// ) -> revolt_rocket_okapi::Result<RequestHeaderInput> {
|
||||
// Ok(RequestHeaderInput::Parameter(Parameter {
|
||||
// name: "Idempotency-Key".to_string(),
|
||||
// description: Some("Unique key to prevent duplicate requests".to_string()),
|
||||
// allow_empty_value: false,
|
||||
// required: false,
|
||||
// deprecated: false,
|
||||
// extensions: schemars::Map::new(),
|
||||
// location: "header".to_string(),
|
||||
// value: ParameterValue::Schema {
|
||||
// allow_reserved: false,
|
||||
// example: None,
|
||||
// examples: None,
|
||||
// explode: None,
|
||||
// style: None,
|
||||
// schema: SchemaObject {
|
||||
// instance_type: Some(SingleOrVec::Single(Box::new(InstanceType::String))),
|
||||
// ..Default::default()
|
||||
// },
|
||||
// },
|
||||
// }))
|
||||
// }
|
||||
// }
|
||||
|
||||
#[cfg(feature = "rocket-impl")]
|
||||
use rocket::{
|
||||
|
||||
@@ -4,3 +4,5 @@ pub mod idempotency;
|
||||
pub mod permissions;
|
||||
pub mod reference;
|
||||
pub mod test_fixtures;
|
||||
#[cfg(feature = "utoipa")]
|
||||
pub mod utoipa;
|
||||
@@ -3,10 +3,13 @@ use std::str::FromStr;
|
||||
use revolt_result::Result;
|
||||
#[cfg(feature = "rocket-impl")]
|
||||
use rocket::request::FromParam;
|
||||
#[cfg(feature = "rocket-impl")]
|
||||
use schemars::{
|
||||
schema::{InstanceType, Schema, SchemaObject, SingleOrVec},
|
||||
JsonSchema,
|
||||
#[cfg(feature = "utoipa")]
|
||||
use utoipa::{
|
||||
openapi::{
|
||||
path::{Parameter, ParameterBuilder, ParameterIn},
|
||||
Required,
|
||||
},
|
||||
IntoParams,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
@@ -113,16 +116,14 @@ impl<'r> FromParam<'r> for Reference<'r> {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "rocket-impl")]
|
||||
impl<'a> JsonSchema for Reference<'a> {
|
||||
fn schema_name() -> String {
|
||||
"Id".to_string()
|
||||
}
|
||||
|
||||
fn json_schema(_gen: &mut schemars::gen::SchemaGenerator) -> Schema {
|
||||
Schema::Object(SchemaObject {
|
||||
instance_type: Some(SingleOrVec::Single(Box::new(InstanceType::String))),
|
||||
..Default::default()
|
||||
})
|
||||
#[cfg(feature = "utoipa")]
|
||||
impl IntoParams for Reference<'_> {
|
||||
fn into_params(parameter_in_provider: impl Fn() -> Option<ParameterIn>) -> Vec<Parameter> {
|
||||
vec![ParameterBuilder::new()
|
||||
.name("id")
|
||||
.required(Required::True)
|
||||
.description(Some("An ID".to_string()))
|
||||
.parameter_in(parameter_in_provider().unwrap_or_default())
|
||||
.build()]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
use utoipa::{Modify, openapi::{OpenApi, security::{ApiKey, ApiKeyValue, SecurityScheme}}};
|
||||
|
||||
pub struct TokenSecurity;
|
||||
|
||||
impl Modify for TokenSecurity {
|
||||
fn modify(&self, openapi: &mut OpenApi) {
|
||||
let components = openapi.components.get_or_insert_default();
|
||||
|
||||
components.add_security_scheme(
|
||||
"Session-Token",
|
||||
SecurityScheme::ApiKey(ApiKey::Header(ApiKeyValue::new(
|
||||
"X-Session-Token".to_string(),
|
||||
))),
|
||||
);
|
||||
|
||||
components.add_security_scheme(
|
||||
"Bot-Token",
|
||||
SecurityScheme::ApiKey(ApiKey::Header(ApiKeyValue::new("X-Bot-Ticket".to_string()))),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user