utoipa_redoc/
rocket.rs

1#![cfg(feature = "rocket")]
2
3use rocket::http::Method;
4use rocket::response::content::RawHtml;
5use rocket::route::{Handler, Outcome};
6use rocket::{Data, Request, Route};
7
8use crate::{Redoc, Spec};
9
10impl<S: Spec> From<Redoc<S>> for Vec<Route> {
11    fn from(value: Redoc<S>) -> Self {
12        vec![Route::new(
13            Method::Get,
14            value.url.as_ref(),
15            RedocHandler(value.to_html()),
16        )]
17    }
18}
19
20#[derive(Clone)]
21struct RedocHandler(String);
22
23#[rocket::async_trait]
24impl Handler for RedocHandler {
25    async fn handle<'r>(&self, request: &'r Request<'_>, _: Data<'r>) -> Outcome<'r> {
26        Outcome::from(request, RawHtml(self.0.clone()))
27    }
28}