465 lines
38 KiB
HTML
465 lines
38 KiB
HTML
|
|
<!-- HTML for static distribution bundle build -->
|
||
|
|
<!DOCTYPE html>
|
||
|
|
<html lang="en">
|
||
|
|
<head>
|
||
|
|
<meta charset="UTF-8">
|
||
|
|
<title>规范化接口</title>
|
||
|
|
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
|
||
|
|
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
|
||
|
|
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
|
||
|
|
<style>
|
||
|
|
|
||
|
|
html {
|
||
|
|
box-sizing: border-box;
|
||
|
|
overflow: -moz-scrollbars-vertical;
|
||
|
|
overflow-y: scroll;
|
||
|
|
}
|
||
|
|
|
||
|
|
*,
|
||
|
|
*:before,
|
||
|
|
*:after {
|
||
|
|
box-sizing: inherit;
|
||
|
|
}
|
||
|
|
|
||
|
|
body {
|
||
|
|
margin: 0;
|
||
|
|
background: #fafafa;
|
||
|
|
}
|
||
|
|
|
||
|
|
#login-form {
|
||
|
|
position: fixed;
|
||
|
|
top: 30px;
|
||
|
|
left: 50%;
|
||
|
|
margin-left: -191px;
|
||
|
|
width: 382px;
|
||
|
|
display: none;
|
||
|
|
border-color: #49cc90;
|
||
|
|
background: rgba(73,204,144,.1);
|
||
|
|
border: 1px solid #000;
|
||
|
|
border-radius: 4px;
|
||
|
|
box-shadow: 0 0 3px rgb(0 0 0 / 19%);
|
||
|
|
font-family: monospace;
|
||
|
|
overflow: hidden;
|
||
|
|
}
|
||
|
|
|
||
|
|
.login-title {
|
||
|
|
background-color: rgb(27, 27, 27);
|
||
|
|
height: 50px;
|
||
|
|
padding: 7px 0 0 7px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.login-title img {
|
||
|
|
display: block;
|
||
|
|
height: 36px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.login-area {
|
||
|
|
padding: 25px 40px 32px;
|
||
|
|
background-color: rgb(232, 246, 240);
|
||
|
|
}
|
||
|
|
|
||
|
|
.form-row {
|
||
|
|
padding: 6px 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
.form-row label {
|
||
|
|
font-size: 14px;
|
||
|
|
flex: 1;
|
||
|
|
margin: 0;
|
||
|
|
font-family: sans-serif;
|
||
|
|
color: #3b4151;
|
||
|
|
font-weight: 700;
|
||
|
|
}
|
||
|
|
|
||
|
|
.form-row input {
|
||
|
|
width: 100%;
|
||
|
|
max-width: 340px;
|
||
|
|
min-width: 100px;
|
||
|
|
margin: 5px 0;
|
||
|
|
padding: 8px 10px;
|
||
|
|
border: 1px solid #d9d9d9;
|
||
|
|
border-radius: 4px;
|
||
|
|
background: #fff;
|
||
|
|
}
|
||
|
|
|
||
|
|
.form-row button {
|
||
|
|
padding: 8px 40px;
|
||
|
|
font-size: 14px;
|
||
|
|
border: none;
|
||
|
|
outline: none;
|
||
|
|
font-weight: 700;
|
||
|
|
cursor: pointer;
|
||
|
|
border-radius: 3px;
|
||
|
|
background-color: #4990e2;
|
||
|
|
color: #fff;
|
||
|
|
border-color: #4990e2;
|
||
|
|
box-shadow: 0 0 5px rgb(0 0 0 / 30%);
|
||
|
|
width: 100%;
|
||
|
|
box-sizing: border-box;
|
||
|
|
}
|
||
|
|
|
||
|
|
.form-row button:hover {
|
||
|
|
opacity: 0.8;
|
||
|
|
}
|
||
|
|
|
||
|
|
#login-error {
|
||
|
|
font-size: 14px;
|
||
|
|
flex: 1;
|
||
|
|
margin: 0;
|
||
|
|
font-family: sans-serif;
|
||
|
|
color: red;
|
||
|
|
margin-top: 8px;
|
||
|
|
}
|
||
|
|
</style>
|
||
|
|
|
||
|
|
</head>
|
||
|
|
|
||
|
|
<body>
|
||
|
|
<div id="swagger-ui"></div>
|
||
|
|
<div id="login-form">
|
||
|
|
<div class="login-title">
|
||
|
|
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDA3IDExNiI+DQogIDxkZWZzPg0KICAgIDxzdHlsZT4NCiAgICAgIC5jbHMtMSB7DQogICAgICAgIGNsaXAtcGF0aDogdXJsKCNjbGlwLVNXX1RNLWxvZ28tb24tZGFyayk7DQogICAgICB9DQoNCiAgICAgIC5jbHMtMiB7DQogICAgICAgIGZpbGw6ICNmZmY7DQogICAgICB9DQoNCiAgICAgIC5jbHMtMyB7DQogICAgICAgIGZpbGw6ICM4NWVhMmQ7DQogICAgICB9DQoNCiAgICAgIC5jbHMtNCB7DQogICAgICAgIGZpbGw6ICMxNzM2NDc7DQogICAgICB9DQogICAgPC9zdHlsZT4NCiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAtU1dfVE0tbG9nby1vbi1kYXJrIj4NCiAgICAgIDxyZWN0IHdpZHRoPSI0MDciIGhlaWdodD0iMTE2Ii8+DQogICAgPC9jbGlwUGF0aD4NCiAgPC9kZWZzPg0KICA8ZyBpZD0iU1dfVE0tbG9nby1vbi1kYXJrIiBjbGFzcz0iY2xzLTEiPg0KICAgIDxnIGlkPSJTV19Jbi1Qcm9kdWN0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC4zMDEpIj4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5MzYiIGRhdGEtbmFtZT0iUGF0aCAyOTM2IiBjbGFzcz0iY2xzLTIiIGQ9Ik0zNTkuMTUsNzAuNjc0aC0uN1Y2Ni45OTJoLTEuMjZ2LS42aDMuMjE5di42SDM1OS4xNVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5MzciIGRhdGEtbmFtZT0iUGF0aCAyOTM3IiBjbGFzcz0iY2xzLTIiIGQ9Ik0zNjMuMjE3LDcwLjY3NCwzNjEuOTc1LDY3LjFoLS4wMjNxLjA1LjguMDUsMS40OTR2Mi4wODNoLS42MzZWNjYuMzkxaC45ODdsMS4xOSwzLjQwN2guMDE3bDEuMjI1LTMuNDA3aC45OXY0LjI4M0gzNjUuMVY2OC41NTZjMC0uMjEzLjAwNi0uNDkuMDE2LS44MzJzLjAyLS41NDkuMDI4LS42MjFoLS4wMjNsLTEuMjg2LDMuNTcxWiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjkzOCIgZGF0YS1uYW1lPSJQYXRoIDI5MzgiIGNsYXNzPSJjbHMtMyIgZD0iTTUwLjMyOCw5Ny42NjlBNDcuNjQyLDQ3LjY0MiwwLDEsMSw5Ny45NzEsNTAuMDI3LDQ3LjY0Miw0Ny42NDIsMCwwLDEsNTAuMzI4LDk3LjY2OVoiLz4NCiAgICAgIDxwYXRoIGlkPSJQYXRoXzI5MzkiIGRhdGEtbmFtZT0iUGF0aCAyOTM5IiBjbGFzcz0iY2xzLTMiIGQ9Ik01MC4zMjgsNC43NjlBNDUuMjU4LDQ1LjI1OCwwLDEsMSw1LjA3LDUwLjAyNyw0NS4yNTgsNDUuMjU4LDAsMCwxLDUwLjMyOCw0Ljc2OW0wLTQuNzY5YTUwLjAyNyw1MC4wMjcsMCwxLDAsNTAuMDI3LDUwLjAyN0E1MC4wMjcsNTAuMDI3LDAsMCwwLDUwLjMyOCwwWiIvPg0KICAgICAgPHBhdGggaWQ9IlBhdGhfMjk0MCIgZGF0YS1uYW1lPSJQYXRoIDI5NDAiIGNsYXNzPSJjbHMtNCIgZD0iTTMxLjgsMzMuODU0Yy0uMTU0LDEuNzEyLjA1OCwzLjQ4Mi0uMDU3LDUuMjEzYTQyLjY2NSw0Mi42NjUsMCwwLDEtLjY5Myw1LjE1Niw5LjUzLDkuNTMsMCwwLDEtNC4xLDUuODI5YzQuMDc5LDIuNjU0LDQuNTQsNi43NzEsNC44MSwxMC45NDYuMTM1LDIuMjUuMDc3LDQuNTIuMzA4LDYuNzUyLjE3MywxLjczMS44NDYsMi4xNzQsMi42MzYsMi4yMzEuNzMuMDIsMS40OCwwLDIuMzI3LDBWNzUuMzNjLTUuMjkuOS05LjY1Ny0uNi0xMC43MzQtNS4wNzlhMzAuNzYsMzAuNzYsMCwwLDEtLjY1NC01Yy0uMTE3LTEuNzg5LjA3Ni0zLjU3OC0uMDU4LTUuMzY3LS4zODYtNC45MDYtMS4wMi02LjU2LTUuNzEzLTYuNzkxdi02LjFBOS4xOTEsOS4xOTEsMCwwLDEsMjAuOSw0Ni44MmMyLjU3Ny0uMTM1LDMuNjc0LS45MjQsNC4yMzEtMy40NjNhMjkuMywyOS4zLDAsMCwwLC40ODEtNC4zMjksODIuMSw4Mi4xLDAsMCwxLC42LTguNDA2Yy42NzMtMy45ODIsMy4xMzYtNS45MDYsNy4yMzQtNi4xMzcsMS4xNTQtLjA1NywyLjMyNywwLDMuNjU1LDB2NS40NjRjLS41NTguMDM4LTEuMDM5LjExNS0xLjUzOS4xMTVDMzIuMjI2LDI5Ljk0OSwzMi4wNTIsMzEuMDg0LDMxLjgsMzMuODU0Wm02LjQwNiwxMi42NThoLS4wNzdhMy41MTUsMy41MTUsMCwxLDAtLjM0Niw3LjAyMWguMjMxYTMuNDYxLDMuNDYxLDAsMCwwLDMuNjU1LTMuMjUxVjUwLjA5YTMuNTIzLDMuNTIzLDAsMCwwLTMuNDYxLTMuNTc4Wm0xMi4wNjIsMGEzLjM3MywzLjM3MywwLDAsMC0zLjQ4MiwzLjI1MSwxLjc5LDEuNzksMCwwLDAsLjAyLjMyNywzLjMsMy4zLDAsMCwwLDMuNTc4LDMuNDQzLDMuMjYzLDMuMjYzLDAsMCwwLDMuNDQzLTMuNTU4LDMuMzA4LDMuMzA4LDAsMCwwLTMuNTU3LTMuNDYzWm0xMi4zNTEsMGEzLjU5MiwzLjU5MiwwLDAsMC0zLjY1NSwzLjQ4MkEzLjUyOSwzLjUyOSwwLDAsMCw2Mi41LDUzLjUzM2guMDM5YzEuNzY5LjMwOSwzLjU1OS0xLjQsMy42NzQtMy40NjJhMy41NzEsMy41NzEsMCwwLDAtMy42LTMuNTU5Wm0xNi45NDguMjg4Yy0yLjIzMi0uMS0zLjM0OC0uODQ2LTMuOS0yLjk2MmEyMS40NDcsMjEuNDQ3LDAsMCwxLS42MzUtNC4xMzZjLS4xNTQtMi41NzgtLjEzNS01LjE3NS0uMzA4LTcuNzUzLS40LTYuMTE3LTQuODI4LTguMjUyLTExLjI1NC03LjE5NXY1LjMxYzEuMDE5LDAsMS44MDgsMCwyLjYuMDE5LDEuMzY2LjAxOSwyLjQuNTM5LDIuNTM5LDIuMDU5LjEzNSwxLjM4NS4xMzUsMi43ODkuMjcsNC4xOTMuMjY5LDIuNzkuNDIyLDUuNjE4LjksOC4zNjlBOC43MTUsOC43MTUsMCwwLDAsNzMuNyw1MC4wNTJjLTMuNCwyLjI4OS00LjQwNiw1LjU1OS00LjU3OCw5LjIzNC0uMSwyLjUyLS4xNTQsNS4wNTktLjI4OSw3LjYtLjExNSwyLjMwOC0uOTIzLDMuMDU4LTMuMjUxLDMuMTE2LS42NTQuMDE5LTEuMjg5LjA3Ny0yLjAxOS4xMTV2NS40NDVjMS4zNjUsMCwyLjYxNi4wNzcsMy44NjYsMCwzLjg4Ni0uMjMxLDYuMjMzLTIuMTE3LDctNS44ODdBNDkuMDc5LDQ5LjA3OSwwLDAsMCw3NSw2My40Yy4xMzUtMS45MjMuMTE2LTMuODY2LjMwOC01Ljc3MS4yODktMi45ODIsMS42NTUtNC4yMTMsNC42MzYtNC40YTQuMDM3LDQuMDM3LDAsMCwwLC44MjgtLjE5MnYtNi4xYy0uNS0uMDU4LS44NDMtLjExNS0
|
||
|
|
</div>
|
||
|
|
<div class="login-area">
|
||
|
|
<div class="form-row">
|
||
|
|
<label for="userName">User Name: </label>
|
||
|
|
<input type="text" id="userName" name="userName" />
|
||
|
|
</div>
|
||
|
|
<div class="form-row">
|
||
|
|
<label for="password">Password: </label>
|
||
|
|
<input type="password" id="password" name="password" />
|
||
|
|
</div>
|
||
|
|
<div class="form-row">
|
||
|
|
<label></label>
|
||
|
|
<button id="submit">Submit</button>
|
||
|
|
</div>
|
||
|
|
<div id="login-error"></div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<script src="./swagger-ui-bundle.js" charset="utf-8"></script>
|
||
|
|
<script src="./swagger-ui-standalone-preset.js" charset="utf-8"></script>
|
||
|
|
<script>
|
||
|
|
/* Source: https://gist.github.com/lamberta/3768814
|
||
|
|
* Parse a string function definition and return a function object. Does not use eval.
|
||
|
|
* @param {string} str
|
||
|
|
* @return {function}
|
||
|
|
*
|
||
|
|
* Example:
|
||
|
|
* var f = function (x, y) { return x * y; };
|
||
|
|
* var g = parseFunction(f.toString());
|
||
|
|
* g(33, 3); //=> 99
|
||
|
|
*/
|
||
|
|
function parseFunction(str) {
|
||
|
|
if (!str) return void (0);
|
||
|
|
|
||
|
|
var fn_body_idx = str.indexOf('{'),
|
||
|
|
fn_body = str.substring(fn_body_idx + 1, str.lastIndexOf('}')),
|
||
|
|
fn_declare = str.substring(0, fn_body_idx),
|
||
|
|
fn_params = fn_declare.substring(fn_declare.indexOf('(') + 1, fn_declare.lastIndexOf(')')),
|
||
|
|
args = fn_params.split(',');
|
||
|
|
|
||
|
|
args.push(fn_body);
|
||
|
|
|
||
|
|
function Fn() {
|
||
|
|
return Function.apply(this, args);
|
||
|
|
}
|
||
|
|
Fn.prototype = Function.prototype;
|
||
|
|
|
||
|
|
return new Fn();
|
||
|
|
}
|
||
|
|
|
||
|
|
// get uri all query variables
|
||
|
|
function getQueryVariables(uri) {
|
||
|
|
var searchArgs = window.location.search;
|
||
|
|
if (uri) {
|
||
|
|
var s = uri.indexOf('?');
|
||
|
|
searchArgs = s > -1 ? uri.substring(s) : '';
|
||
|
|
}
|
||
|
|
var query = searchArgs.substring(1);
|
||
|
|
var vars = query.split('&');
|
||
|
|
var varObj = {};
|
||
|
|
for (var i = 0; i < vars.length; i++) {
|
||
|
|
var pair = vars[i].split('=');
|
||
|
|
varObj[pair[0]] = pair[1];
|
||
|
|
}
|
||
|
|
return varObj;
|
||
|
|
}
|
||
|
|
|
||
|
|
// get uri query variable
|
||
|
|
function getQueryVariable(variable, uri) {
|
||
|
|
var vars = getQueryVariables(uri);
|
||
|
|
for (var key in vars) {
|
||
|
|
if (key === variable) return vars[key];
|
||
|
|
}
|
||
|
|
return (false);
|
||
|
|
}
|
||
|
|
|
||
|
|
// if value is null or undefined than execute delete operate, else execute update
|
||
|
|
function updateQueryVariable(uri, key, value) {
|
||
|
|
var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
|
||
|
|
var separator = uri.indexOf('?') !== -1 ? '&' : '?';
|
||
|
|
if (uri.match(re)) {
|
||
|
|
return uri.replace(re, !value ? '' : ('$1' + key + '=' + value + '$2'));
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return !value ? '' : (uri + separator + key + '=' + value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// get uri template
|
||
|
|
function getUrlTemplate(uri) {
|
||
|
|
var reg = /\{(.+?)\}/g;
|
||
|
|
return uri.match(reg);
|
||
|
|
}
|
||
|
|
|
||
|
|
// hide empty tags
|
||
|
|
var HideEmptyTagsPlugin = function HideEmptyTagsPlugin() {
|
||
|
|
return {
|
||
|
|
statePlugins: {
|
||
|
|
spec: {
|
||
|
|
wrapSelectors: {
|
||
|
|
taggedOperations: function taggedOperations(ori) {
|
||
|
|
return function () {
|
||
|
|
return ori.apply(void 0, arguments).filter(function (tagMeta) {
|
||
|
|
return tagMeta.get("operations") && tagMeta.get("operations").size > 0;
|
||
|
|
});
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
};
|
||
|
|
|
||
|
|
var tokenKey = "access-token";
|
||
|
|
var cultureKey = "culture";
|
||
|
|
|
||
|
|
// default response interceptor
|
||
|
|
function defaultResponseInterceptor(response) {
|
||
|
|
// handle jwt token
|
||
|
|
var accessToken = response.headers[tokenKey];
|
||
|
|
if (accessToken && accessToken != "invalid_token") {
|
||
|
|
window.localStorage.setItem(tokenKey, accessToken);
|
||
|
|
ui.preauthorizeApiKey("Bearer", accessToken);
|
||
|
|
}
|
||
|
|
else if (accessToken == "invalid_token") {
|
||
|
|
window.localStorage.removeItem(tokenKey);
|
||
|
|
ui.authActions.logout(["Bearer"]);
|
||
|
|
}
|
||
|
|
|
||
|
|
return response;
|
||
|
|
}
|
||
|
|
|
||
|
|
// default request interceptor
|
||
|
|
function defaultRequestInterceptor(request) {
|
||
|
|
var url = request.url;
|
||
|
|
|
||
|
|
// add swagger header
|
||
|
|
request.headers["request-from"] = "swagger";
|
||
|
|
|
||
|
|
// handle template
|
||
|
|
var temps = getUrlTemplate(url);
|
||
|
|
if (temps && temps.length > 0) {
|
||
|
|
for (var i = 0; i < temps.length; i++) {
|
||
|
|
var temp = temps[i];
|
||
|
|
var key = temp.substring(1, temp.length - 1);
|
||
|
|
var queryKey = getQueryVariable(key, url);
|
||
|
|
if (queryKey) {
|
||
|
|
url = updateQueryVariable(url.replace(temp, queryKey), key);
|
||
|
|
}
|
||
|
|
else url = url.replace(temp, '');
|
||
|
|
}
|
||
|
|
request.url = url;
|
||
|
|
}
|
||
|
|
|
||
|
|
// handle culture lang
|
||
|
|
var culture = getQueryVariable(cultureKey);
|
||
|
|
if (culture && culture.length > 0) {
|
||
|
|
request.url = updateQueryVariable(url, cultureKey, culture);
|
||
|
|
}
|
||
|
|
|
||
|
|
return request;
|
||
|
|
}
|
||
|
|
|
||
|
|
// send ajax request
|
||
|
|
function sendRequest(params) {
|
||
|
|
let xhr = new XMLHttpRequest();
|
||
|
|
xhr.onreadystatechange = function () {
|
||
|
|
if (xhr.readyState == 4 && xhr.status == 200) {
|
||
|
|
let obj = JSON.parse(xhr.response);
|
||
|
|
let headers = xhr.getAllResponseHeaders();
|
||
|
|
let arr = headers.trim().split(/[\r\n]+/);
|
||
|
|
let headerMap = {};
|
||
|
|
arr.forEach(function (line) {
|
||
|
|
let parts = line.split(': ');
|
||
|
|
let header = parts.shift();
|
||
|
|
let value = parts.join(': ');
|
||
|
|
headerMap[header] = value;
|
||
|
|
});
|
||
|
|
|
||
|
|
params.success(obj, headerMap);
|
||
|
|
} else if (xhr.readyState == 4 && xhr.status >= 400) {
|
||
|
|
params.error(xhr);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function objectToString(obj) {
|
||
|
|
let arr = [];
|
||
|
|
for (var k in obj) {
|
||
|
|
arr.push(`${k}=${encodeURIComponent(obj[k])}`);
|
||
|
|
}
|
||
|
|
|
||
|
|
return arr.join('&');
|
||
|
|
}
|
||
|
|
|
||
|
|
let qs = objectToString(params.data);
|
||
|
|
|
||
|
|
var accessToken = window.localStorage.getItem(tokenKey);
|
||
|
|
|
||
|
|
if (params.method.toUpperCase() == 'GET') {
|
||
|
|
xhr.open('GET', params.url + '?' + qs);
|
||
|
|
if (accessToken) {
|
||
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
|
||
|
|
}
|
||
|
|
xhr.send();
|
||
|
|
} else if (params.method.toUpperCase() == 'POST') {
|
||
|
|
xhr.open('POST', params.url);
|
||
|
|
if (accessToken) {
|
||
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
|
||
|
|
}
|
||
|
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||
|
|
xhr.send(qs);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// init swagger ui
|
||
|
|
function initSwaggerUI(configObject, oauthConfigObject) {
|
||
|
|
configObject.onComplete = function () {
|
||
|
|
var accessToken = window.localStorage.getItem(tokenKey);
|
||
|
|
if (accessToken) {
|
||
|
|
ui.preauthorizeApiKey("Bearer", accessToken);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
// Workaround for https://github.com/swagger-api/swagger-ui/issues/5945
|
||
|
|
configObject.urls.forEach(function (item) {
|
||
|
|
if (item.url.startsWith("http") || item.url.startsWith("/")) return;
|
||
|
|
item.url = window.location.href.replace("index.html", item.url).split('#')[0];
|
||
|
|
});
|
||
|
|
|
||
|
|
// If validatorUrl is not explicitly provided, disable the feature by setting to null
|
||
|
|
if (!configObject.hasOwnProperty("validatorUrl"))
|
||
|
|
configObject.validatorUrl = null
|
||
|
|
|
||
|
|
// If oauth2RedirectUrl isn't specified, use the built-in default
|
||
|
|
if (!configObject.hasOwnProperty("oauth2RedirectUrl"))
|
||
|
|
configObject.oauth2RedirectUrl = (new URL("oauth2-redirect.html", window.location.href)).href;
|
||
|
|
|
||
|
|
// Apply mandatory parameters
|
||
|
|
configObject.dom_id = "#swagger-ui";
|
||
|
|
configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset, HideEmptyTagsPlugin];
|
||
|
|
configObject.layout = "StandaloneLayout";
|
||
|
|
|
||
|
|
// Parse and add interceptor functions
|
||
|
|
var interceptors = JSON.parse('{"RequestInterceptorFunction":"function(request) { return defaultRequestInterceptor(request); }","ResponseInterceptorFunction":"function(response) { return defaultResponseInterceptor(response); }"}');
|
||
|
|
if (interceptors.RequestInterceptorFunction)
|
||
|
|
configObject.requestInterceptor = parseFunction(interceptors.RequestInterceptorFunction);
|
||
|
|
if (interceptors.ResponseInterceptorFunction)
|
||
|
|
configObject.responseInterceptor = parseFunction(interceptors.ResponseInterceptorFunction);
|
||
|
|
|
||
|
|
// Begin Swagger UI call region
|
||
|
|
|
||
|
|
const ui = SwaggerUIBundle(configObject);
|
||
|
|
|
||
|
|
ui.initOAuth(oauthConfigObject);
|
||
|
|
|
||
|
|
// End Swagger UI call region
|
||
|
|
|
||
|
|
window.ui = ui;
|
||
|
|
}
|
||
|
|
|
||
|
|
window.onload = function () {
|
||
|
|
var configObject = JSON.parse('{"urls":[{"url":"/swagger/Default/swagger.json","name":"\u540E\u7AEF\u63A5\u53E3"},{"url":"/swagger/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%A5%E5%8F%A3/swagger.json","name":"\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u63A5\u53E3"}],"deepLinking":false,"persistAuthorization":false,"displayOperationId":false,"defaultModelsExpandDepth":1,"defaultModelExpandDepth":1,"defaultModelRendering":"example","displayRequestDuration":false,"docExpansion":"list","showExtensions":false,"showCommonExtensions":false,"supportedSubmitMethods":["get","put","post","delete","options","head","patch","trace"],"tryItOutEnabled":false}');
|
||
|
|
var oauthConfigObject = JSON.parse('{"scopeSeparator":" ","scopes":[],"useBasicAuthenticationWithAccessCodeGrant":false,"usePkceWithAuthorizationCodeGrant":false}');
|
||
|
|
|
||
|
|
var loginObject = configObject.LoginInfo;
|
||
|
|
if (loginObject && loginObject.Enabled === true) {
|
||
|
|
var loginForm = document.getElementById("login-form");
|
||
|
|
var userName = document.getElementById("userName");
|
||
|
|
userName.value = loginObject.DefaultUsername;
|
||
|
|
var password = document.getElementById("password");
|
||
|
|
password.value = loginObject.DefaultPassword;
|
||
|
|
var submit = document.getElementById("submit");
|
||
|
|
var loginError = document.getElementById("login-error");
|
||
|
|
loginForm.style.display = "block";
|
||
|
|
|
||
|
|
sendRequest({
|
||
|
|
method: "POST",
|
||
|
|
url: loginObject.CheckUrl,
|
||
|
|
success: function (res, headerMap) {
|
||
|
|
if (res.toString() === "200") {
|
||
|
|
loginForm.style.display = "none";
|
||
|
|
initSwaggerUI(configObject, oauthConfigObject);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
userName.focus();
|
||
|
|
|
||
|
|
submit.addEventListener("click", function (ev) {
|
||
|
|
if (userName.value.trim().length === 0) {
|
||
|
|
userName.focus();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (password.value.trim().length === 0) {
|
||
|
|
password.focus();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
loginError.innerHTML = "";
|
||
|
|
|
||
|
|
sendRequest({
|
||
|
|
method: "POST",
|
||
|
|
url: loginObject.SubmitUrl,
|
||
|
|
data: {
|
||
|
|
userName: userName.value.trim(),
|
||
|
|
password: password.value.trim()
|
||
|
|
},
|
||
|
|
success: function (res, headerMap) {
|
||
|
|
if (res.toString() === "200") {
|
||
|
|
loginForm.style.display = "none";
|
||
|
|
initSwaggerUI(configObject, oauthConfigObject);
|
||
|
|
defaultResponseInterceptor({ headers: headerMap });
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
loginError.innerHTML = "Invalid UserName or Password.";
|
||
|
|
}
|
||
|
|
},
|
||
|
|
error: function (xhr) {
|
||
|
|
if (xhr.status === 404) {
|
||
|
|
loginError.innerHTML = "Not Found: " + loginObject.SubmitUrl;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
loginError.innerHTML = "Internal ServerError: " + loginObject.SubmitUrl;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
},
|
||
|
|
error: function (xhr) {
|
||
|
|
if (xhr.status === 404) {
|
||
|
|
loginError.innerHTML = "Not Found: " + loginObject.CheckUrl;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
loginError.innerHTML = "Internal ServerError: " + loginObject.CheckUrl;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
initSwaggerUI(configObject, oauthConfigObject);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
</body>
|
||
|
|
</html>
|