Initial commit: Complete workspace configuration
- MOper/ configurations - home-assistant/ configurations - scripts/ automation scripts - unix/ system configurations - docker/ Docker services (app, devtools, database, infra, maintenance, portainer, supervision, test) Excludes: databases, logs, large files, Git submodules, secrets (via .gitignore)
This commit is contained in:
Binary file not shown.
105
docker/test/tvtracker/config/www/organizr/docs/home/index.php
Normal file
105
docker/test/tvtracker/config/www/organizr/docs/home/index.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,user-scalable=yes">
|
||||
<title>RapiDoc</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,600&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
|
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.1/build/styles/default.min.css">
|
||||
<script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.1/build/highlight.min.js"></script>
|
||||
<style>
|
||||
.btn {
|
||||
width: 90px;
|
||||
height: 32px;
|
||||
padding: 2px;
|
||||
font-size: 13px;
|
||||
background-color: #707cd2;
|
||||
color: #fff;
|
||||
border: none;
|
||||
margin: 0 2px;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.btn.medium {
|
||||
width: 75px;
|
||||
height: 24px
|
||||
}
|
||||
|
||||
.btn.small {
|
||||
width: 60px;
|
||||
height: 24px
|
||||
}
|
||||
|
||||
rapi-doc {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.img-container {
|
||||
text-align: center;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
function getRapiDoc() {
|
||||
return document.getElementById("thedoc");
|
||||
}
|
||||
|
||||
function changeRenderStyle() {
|
||||
let currRender = getRapiDoc().getAttribute('render-style');
|
||||
let newRender = currRender === "read" ? "view" : "read";
|
||||
getRapiDoc().setAttribute('render-style', newRender);
|
||||
toggleAttr('show-header');
|
||||
}
|
||||
|
||||
function toggleAttr(attr) {
|
||||
if (getRapiDoc().getAttribute(attr) === 'false') {
|
||||
getRapiDoc().setAttribute(attr, "true");
|
||||
} else {
|
||||
getRapiDoc().setAttribute(attr, "false");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<rapi-doc
|
||||
id="thedoc"
|
||||
heading-text=""
|
||||
goto-path="Overview"
|
||||
spec-url="../api.json"
|
||||
allow-server-selection="true"
|
||||
show-header="true"
|
||||
theme="dark"
|
||||
bg-color="#1f1f1f"
|
||||
header-color="#1b1a1a"
|
||||
primary-color="#2cabe3"
|
||||
nav-bg-color="#1b1a1a"
|
||||
allow-try="true"
|
||||
allow-api-list-style-selection="true"
|
||||
regular-font="Nunito"
|
||||
schema-style="tree"
|
||||
render-style="view"
|
||||
default-schema-tab="example"
|
||||
sort-tags="true"
|
||||
allow-spec-url-load="false"
|
||||
allow-spec-file-load="false"
|
||||
>
|
||||
<img src="../../plugins/images/organizr/logo.png" style="height: 50px" slot="logo">
|
||||
<div style="display:flex; margin:10px; justify-content:center;flex-wrap: wrap;" slot="logo">
|
||||
<button class="btn read-button" onclick="changeRenderStyle()">Change View</button>
|
||||
</div>
|
||||
<span class="img-container" slot="nav-logo">
|
||||
<img src="../../plugins/images/organizr/logo-wide.png" style="width: 300px">
|
||||
</span>
|
||||
<div slot="nav-logo" style="width:100%; display: flex; flex-direction:column;">
|
||||
<div style="display: flex;justify-content: center; margin: 2px 0">
|
||||
<button class='btn' onclick="changeRenderStyle()">Change View</button>
|
||||
</div>
|
||||
</div>
|
||||
</rapi-doc>
|
||||
<script src="rapidoc-min.js">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
218
docker/test/tvtracker/config/www/organizr/docs/home/rapidoc-min.js
vendored
Normal file
218
docker/test/tvtracker/config/www/organizr/docs/home/rapidoc-min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"rapidoc-min.js","sources":["webpack:///rapidoc-min.js"],"mappings":";;;;;AAMA;;;;;;;AAqoMA;;;;;;AA8hIA;;;;;;AAmlDA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAonSA;;;;;;AAylBA;;;;;;;;;;;;;AA6udA;;;;;;;;;;;;;;AAmYA;;;;;;;;;;;;;;AAiGA;;;;;;;;;;;;;AAsIA;;;;;;;;;;;;;;AAsHA;;;;;;;;;;;;;AAqcA;;;;;;;;;;;;;AAgIA;;;;;;;;;;;;;;AAjCA;;;;;;;;;;;;;AAkFA;;;;;;;;;;;AA+yCA;;;;;;;;;;;;;;AAuFA;;;;;;;;;;;;;AAg5KA","sourceRoot":""}
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
20
docker/test/tvtracker/config/www/organizr/docs/index.php
Normal file
20
docker/test/tvtracker/config/www/organizr/docs/index.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
require_once '../api/functions.php';
|
||||
define("API_HOST", getServerPath(false) . '');
|
||||
$dirs = [
|
||||
'../api/plugins',
|
||||
'../api/v2',
|
||||
];
|
||||
$openapi = \OpenApi\scan($dirs);
|
||||
ob_start();
|
||||
header('Content-Type: application/json');
|
||||
$json = $openapi->toJson();
|
||||
echo $json;
|
||||
// Return the contents of the output buffer
|
||||
$htmlStr = ob_get_contents();
|
||||
// Clean (erase) the output buffer and turn off output buffering
|
||||
ob_end_clean();
|
||||
// Write final string to file
|
||||
file_put_contents('./api.json', $htmlStr);
|
||||
header("Location: home/");
|
||||
echo $json;
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 665 B |
Binary file not shown.
|
After Width: | Height: | Size: 628 B |
@@ -0,0 +1,69 @@
|
||||
<!-- HTML for static distribution bundle build -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Swagger UI</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;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="swagger-ui"></div>
|
||||
|
||||
<script src="./swagger-ui-bundle.js"> </script>
|
||||
<script src="./swagger-ui-standalone-preset.js"> </script>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
// Begin Swagger UI call region
|
||||
const ui = SwaggerUIBundle({
|
||||
url: "../api.json",
|
||||
dom_id: '#swagger-ui',
|
||||
deepLinking: true,
|
||||
presets: [
|
||||
SwaggerUIBundle.presets.apis,
|
||||
SwaggerUIStandalonePreset
|
||||
],
|
||||
plugins: [
|
||||
SwaggerUIBundle.plugins.DownloadUrl
|
||||
],
|
||||
layout: "BaseLayout",
|
||||
tagsSorter:'alpha',
|
||||
operationsSorter:'alpha',
|
||||
filter: true,
|
||||
syntaxHighlight: {
|
||||
'activate':true,
|
||||
'theme':'monokai'
|
||||
},
|
||||
defaultModelRendering:'example'
|
||||
|
||||
})
|
||||
// End Swagger UI call region
|
||||
|
||||
window.ui = ui
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,68 @@
|
||||
<!doctype html>
|
||||
<html lang="en-US">
|
||||
<title>Swagger UI: OAuth2 Redirect</title>
|
||||
<body onload="run()">
|
||||
</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();
|
||||
}
|
||||
</script>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user