Skip to content

Commit

Permalink
feat: support openapiv3
Browse files Browse the repository at this point in the history
  • Loading branch information
PrivateRookie committed Jan 3, 2021
1 parent 8e4eabb commit 32c8f4f
Show file tree
Hide file tree
Showing 33 changed files with 392 additions and 85 deletions.
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"dcli",
"favicon",
"logfile",
"openapi",
"readline",
"rustyline",
"sess",
Expand Down
15 changes: 15 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,6 @@ i18n-embed-fl = "0.2.0"
once_cell = "1.5.2"
warp = "0.2.5"
tracing = "0.1.22"
tracing-subscriber = "0.2.15"
tracing-subscriber = "0.2.15"
openapiv3 = "0.3"
indexmap = "1.3"
Binary file added assets/favicon-16x16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/favicon-32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
131 changes: 52 additions & 79 deletions assets/index.html
Original file line number Diff line number Diff line change
@@ -1,85 +1,58 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<header>
<title>DCli - Database Connection Mange Tool</title>
<link href="assets/bootstrap.min.css" rel="stylesheet" />
<script src="assets/bootstrap.min.js"></script>
<script src="assets/axios.min.js"></script>
</header>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="assets/swagger-ui.css" >
<style>
html
{
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}

<body onload="fetchMeta()">
<div class="container-xxl">
<div class="row align-items-center">
<div class="col text-center">
<h1 class="big-title">DCli - Database Connection Mange Tool</h1>
</div>
</div>
*,
*:before,
*:after
{
box-sizing: inherit;
}

<hr />
<div id="alert" role="alert"></div>
<div class="row justify-content-center api-list">
<h2>All Queries</h2>
<div class="col">
<div id="meta"></div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-1">
<div id="loading">
<img src="assets/loader.svg" />
<span>Loading</span>
</div>
</div>
<!-- <div class="col-1">
<div class="dropdown">
<a class="btn btn-secondary dropdow-toggle" href="#" role="button" id="dropdownMenuLik"
data-bs-toggle="dropdown">Download</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="download/csv" target="_blank" download="data.csv">Download CSV</a>
</li>
<li>
<a class="dropdown-item" href="download/json" target="_blank" download="data.json">Download Json</a>
</li>
<li>
<a class="dropdown-item" href="download/yaml" target="_blank" download="data.yaml">Download Yaml</a>
</li>
</ul>
</div>
</div> -->
</div>
<div class="row justify-content-center">
<div class="col">
<div
id="err-card"
class="alert alert-danger d-none fade show text-center"
>
<h4>Fetch Data Error</h4>
<hr />
<span id="err-detail"></span>
<a
type="button"
class="btn btn-close btn-sm btn-outline"
onclick="dismissErr()"
aria-label="Close"
style="float: right"
></a>
</div>
</div>
</div>
<div class="row align-items-center">
<div class="col">
<div id="wrapper"></div>
</div>
</div>
</div>
body
{
margin:0;
background: #fafafa;
}
</style>
</head>

<script src="assets/gridjs.min.js"></script>
<link rel="stylesheet" type="text/css" href="assets/gridjs.min.css" />
<link rel="stylesheet" type="text/css" href="assets/style.css" />
<script src="assets/script.js"></script>
<body>
<div id="swagger-ui"></div>

<script src="assets/swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="assets/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script>
window.onload = function() {
// Begin Swagger UI call region
const ui = SwaggerUIBundle({
url: "http://localhost:3030/openapi.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})
// End Swagger UI call region

window.ui = ui
}
</script>
</body>
</html>
74 changes: 74 additions & 0 deletions assets/oauth2-redirect.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<!doctype html>
<html lang="en-US">
<head>
<title>Swagger UI: OAuth2 Redirect</title>
</head>
<body>
</body>
</html>
<script>
'use strict';
function run () {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;

if (/code|token|error/.test(window.location.hash)) {
qp = window.location.hash.substring(1);
} else {
qp = location.search.substring(1);
}

arr = qp.split("&")
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';})
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value)
}
) : {}

isValid = qp.state === sentState

if ((
oauth2.auth.schema.get("flow") === "accessCode"||
oauth2.auth.schema.get("flow") === "authorizationCode"
) && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
});
}

if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
let oauthErrorMsg
if (qp.error) {
oauthErrorMsg = "["+qp.error+"]: " +
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
(qp.error_uri ? "More info: "+qp.error_uri : "");
}

oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}

window.addEventListener('DOMContentLoaded', function () {
run();
});
</script>
3 changes: 3 additions & 0 deletions assets/swagger-ui-bundle.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/swagger-ui-bundle.js.map

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions assets/swagger-ui-es-bundle-core.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/swagger-ui-es-bundle-core.js.map

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions assets/swagger-ui-es-bundle.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/swagger-ui-es-bundle.js.map

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions assets/swagger-ui-standalone-preset.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/swagger-ui-standalone-preset.js.map

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions assets/swagger-ui.css

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/swagger-ui.css.map

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions assets/swagger-ui.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/swagger-ui.js.map

Large diffs are not rendered by default.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
34 changes: 34 additions & 0 deletions assets_old/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<header>
<title>DCli - Database Connection Mange Tool</title>
<script src="https://unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
<script src="https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui-standalone-preset.js"></script>
</header>

<body onload="onLoad()">
<div class="row">
<div class="col">
<div id="swagger-ui"></div>
</div>
</div>

<script>
const initSwaggerUI = () => {
const ui = SwaggerUIBundle({
url: `${window.location.protocol}//${window.location.host}/open_api`,
dom_id: "#swagger-ui",
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIBundle.SwaggerUIStandalonePreset,
],
});
window.ui = ui;
};
initSwaggerUI();
</script>
</body>
</html>
File renamed without changes
76 changes: 76 additions & 0 deletions assets_old/old.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<header>
<title>DCli - Database Connection Mange Tool</title>
<link href="assets/bootstrap.min.css" rel="stylesheet" />
<script src="assets/bootstrap.min.js"></script>
<script src="assets/axios.min.js"></script>
<script src="https://unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
<script src="https://unpkg.com/swagger-ui-dist@3.12.1/swagger-ui-standalone-preset.js"></script>
</header>

<body onload="onLoad()">
<div class="container-xxl">
<div class="row align-items-center">
<div class="col text-center">
<h1 class="big-title">DCli - Database Connection Mange Tool</h1>
</div>
</div>

<hr />
<div id="alert" role="alert"></div>
<div class="row justify-content-center api-list">
<h2>All Queries</h2>
<div class="col">
<div id="meta"></div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-1">
<div id="loading">
<img src="assets/loader.svg" />
<span>Loading</span>
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col">
<div
id="err-card"
class="alert alert-danger d-none fade show text-center"
>
<h4>Fetch Data Error</h4>
<hr />
<span id="err-detail"></span>
<a
type="button"
class="btn btn-close btn-sm btn-outline"
onclick="dismissErr()"
aria-label="Close"
style="float: right"
></a>
</div>
</div>
</div>
<div class="row align-items-center">
<div class="col">
<div id="wrapper"></div>
</div>
</div>

<div class="row">
<div class="col">
<div id="swagger-ui"></div>
</div>
</div>
</div>

<script src="assets/gridjs.min.js"></script>
<link rel="stylesheet" type="text/css" href="assets/gridjs.min.css" />
<link rel="stylesheet" type="text/css" href="assets/style.css" />
<script src="assets/script.js"></script>
</body>
</html>
Loading

0 comments on commit 32c8f4f

Please sign in to comment.