fix: harden Polygon operation validation
This commit is contained in:
+43
-35
@@ -1,5 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
@@ -7,18 +8,29 @@
|
||||
<link rel="icon" type="image/svg+xml" href="{{ url_for('static', filename='favicon.svg') }}">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css">
|
||||
<style>
|
||||
html { box-sizing: border-box; overflow-y: scroll; }
|
||||
*, *:before, *:after { box-sizing: inherit; }
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
/* Nubes-брендированный topbar */
|
||||
.swagger-ui .topbar {
|
||||
background: #fff;
|
||||
border-bottom: 4px solid #2563eb;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.swagger-ui .topbar .wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -27,15 +39,18 @@
|
||||
margin: 0 auto;
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.swagger-ui .topbar a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.swagger-ui .topbar img.logo {
|
||||
height: 28px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.swagger-ui .topbar .version-badge {
|
||||
background: #2563eb;
|
||||
color: #fff;
|
||||
@@ -45,6 +60,7 @@
|
||||
font-weight: 600;
|
||||
font-family: system-ui, sans-serif;
|
||||
}
|
||||
|
||||
.swagger-ui .topbar .nav-link {
|
||||
color: #6b7280;
|
||||
font-size: 13px;
|
||||
@@ -52,58 +68,49 @@
|
||||
font-family: system-ui, sans-serif;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.swagger-ui .topbar .nav-link:hover {
|
||||
color: #2563eb;
|
||||
}
|
||||
|
||||
/* Скрываем лого Swagger по умолчанию (заменяем своим) */
|
||||
.swagger-ui .topbar .link img[alt="Swagger UI"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Инфо-блок в description */
|
||||
.swagger-ui .markdown p {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.swagger-ui .info .title {
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="swagger-ui"></div>
|
||||
<div id="swagger-ui"></div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js" crossorigin></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-standalone-preset.js" crossorigin></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js" crossorigin></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-standalone-preset.js" crossorigin></script>
|
||||
|
||||
<script>
|
||||
window.onload = function () {
|
||||
const ui = SwaggerUIBundle({
|
||||
spec: {{ spec_json | safe }},
|
||||
dom_id: "#swagger-ui",
|
||||
<script>
|
||||
window.onload = function () {
|
||||
const ui = SwaggerUIBundle({
|
||||
spec: {{ spec_json | safe }},
|
||||
dom_id: "#swagger-ui",
|
||||
deepLinking: true,
|
||||
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
|
||||
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
|
||||
layout: "StandaloneLayout",
|
||||
defaultModelsExpandDepth: 1,
|
||||
defaultModelExpandDepth: 2,
|
||||
docExpansion: "list",
|
||||
filter: true,
|
||||
showExtensions: true,
|
||||
showCommonExtensions: true,
|
||||
// Предзаполняем токен для _mock/*
|
||||
onComplete: function () {
|
||||
const authToken = {{ auth_token | tojson }};
|
||||
if (authToken) {
|
||||
ui.preauthorizeApiKey("mockAuth", authToken);
|
||||
}
|
||||
},
|
||||
requestInterceptor: function (req) {
|
||||
// Добавляем X-Mock-Auth только для _mock/* эндпоинтов
|
||||
if (req.url.indexOf("/_mock/") !== -1 && {{ auth_token | tojson }}) {
|
||||
req.headers["X-Mock-Auth"] = {{ auth_token | tojson }};
|
||||
}
|
||||
return req;
|
||||
},
|
||||
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
|
||||
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
|
||||
layout: "StandaloneLayout",
|
||||
defaultModelsExpandDepth: 1,
|
||||
defaultModelExpandDepth: 2,
|
||||
docExpansion: "list",
|
||||
filter: true,
|
||||
showExtensions: true,
|
||||
showCommonExtensions: true,
|
||||
});
|
||||
|
||||
// Кастомный topbar с лого Nubes
|
||||
@@ -128,7 +135,8 @@
|
||||
});
|
||||
observer.observe(document.body, { childList: true, subtree: true });
|
||||
};
|
||||
</script>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user