1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
use std::borrow::Cow;
/// Implements [`Handler`] for serving ReDoc.
#[non_exhaustive]
#[derive(Clone, Debug)]
pub struct ReDoc {
/// The title of the html page. The default title is "Scalar".
pub title: Cow<'static, str>,
/// The version of the html page.
pub keywords: Option<Cow<'static, str>>,
/// The description of the html page.
pub description: Option<Cow<'static, str>>,
/// The lib url path.
pub lib_url: Cow<'static, str>,
/// The spec url path.
pub spec_url: Cow<'static, str>,
}
impl ReDoc {
/// Create a new [`ReDoc`] for given path.
/// Path argument will expose the ReDoc to the user and should be something that
/// the underlying application framework / library supports.
/// # Examples
/// ```rust
/// # use hypers_openapi::redoc::ReDoc;
/// let doc = ReDoc::new("/openapi.json");
/// ```
pub fn new(spec_url: impl Into<Cow<'static, str>>) -> Self {
Self {
title: "ReDoc".into(),
keywords: None,
description: None,
lib_url: "https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js".into(),
spec_url: spec_url.into(),
}
}
/// Set title of the html page. The default title is "Scalar".
pub fn title(mut self, title: impl Into<Cow<'static, str>>) -> Self {
self.title = title.into();
self
}
/// Set keywords of the html page.
pub fn keywords(mut self, keywords: impl Into<Cow<'static, str>>) -> Self {
self.keywords = Some(keywords.into());
self
}
/// Set description of the html page.
pub fn description(mut self, description: impl Into<Cow<'static, str>>) -> Self {
self.description = Some(description.into());
self
}
/// Set the lib url path.
pub fn lib_url(mut self, lib_url: impl Into<Cow<'static, str>>) -> Self {
self.lib_url = lib_url.into();
self
}
}