Source code for openapi.spec.redoc
from dataclasses import dataclass
from aiohttp import web
[docs]@dataclass
class Redoc:
"""A dataclass for redoc rendering"""
path: str = "/docs"
favicon_url: str = (
"https://raw.githubusercontent.com/Redocly/redoc/master/demo/favicon.png"
)
redoc_js_url: str = (
"https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js"
)
font: str = "family=Montserrat:300,400,700|Roboto:300,400,700"
async def handle_doc(self, request: web.Request) -> web.Response:
"""Render a webpage with redoc and the spec form the app"""
spec = request.app["spec"]
spec_url = request.app.router["openapi_spec"].url_for()
title = spec.info.title
html = f"""
<!DOCTYPE html>
<html>
<head>
<title>{title}</title>
<!-- needed for adaptive design -->
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
"""
if self.font:
html += f"""
<link href="https://fonts.googleapis.com/css?{self.font}" rel="stylesheet">
"""
html += f"""
<link rel="shortcut icon" href="{self.favicon_url}">
<!--
ReDoc doesn't change outer page styles
-->
<style>
body {{
margin: 0;
padding: 0;
}}
</style>
</head>
<body>
<redoc spec-url="{spec_url}"></redoc>
<script src="{self.redoc_js_url}"> </script>
</body>
</html>
"""
return web.Response(text=html, content_type="text/html")