Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e7f2effec | ||
|
|
35d8dc101b | ||
|
|
8b877cafc9 | ||
|
|
d073c0a908 | ||
|
|
90021ad100 | ||
|
|
673613129f | ||
|
|
58460145f3 | ||
|
|
d9e81fdb4c | ||
|
|
10ad489439 | ||
|
|
4fe23ac2fe | ||
|
|
0f7aa4518c | ||
|
|
6763652f65 | ||
|
|
0d41d7d893 | ||
|
|
fdbdf177fe | ||
|
|
02da09efa2 | ||
|
|
5ca6c8972e | ||
|
|
921f76e7ee | ||
|
|
daf225ee0a | ||
|
|
cb5f9b643d | ||
|
|
b055fb176b | ||
|
|
68cd5d0d1b | ||
|
|
38750aec58 | ||
|
|
c0ab1dd4db | ||
|
|
ed6a330d5d | ||
|
|
e4c2236a68 | ||
|
|
6a753a4bc8 | ||
|
|
2905068997 | ||
|
|
f386054a53 | ||
|
|
1e19281a7b | ||
|
|
f8db172158 | ||
|
|
78b3678f74 | ||
|
|
fa5de88f5d | ||
|
|
6bfec976a0 | ||
|
|
353c8a39c5 | ||
|
|
4f467b4073 | ||
|
|
43760ec29f | ||
|
|
7ca8cdeffb | ||
|
|
fd3eb4f65a | ||
|
|
1142f01da1 | ||
|
|
d9e14e1e7d | ||
|
|
af068f787a | ||
|
|
8b01247192 | ||
|
|
8155330ae3 | ||
|
|
37d158bdc1 | ||
|
|
26d8aced96 | ||
|
|
878dad251d | ||
|
|
2ba1c100ae | ||
|
|
0b7c6f048c | ||
|
|
3787de8038 | ||
|
|
0f12d5d45c | ||
|
|
4e234cc3c7 | ||
|
|
7f0de6312e | ||
|
|
f8e5e57540 | ||
|
|
bfc6dbd50f | ||
|
|
842f477620 | ||
|
|
a0cce8e746 | ||
|
|
7e1a02be83 | ||
|
|
90f641059f | ||
|
|
5def48cf99 | ||
|
|
3494d44d3f | ||
|
|
f2a1caa379 | ||
|
|
7cdf83a932 | ||
|
|
776325b993 | ||
|
|
c04b81c51e | ||
|
|
3c0fac249f | ||
|
|
23515834e8 | ||
|
|
d963302c72 | ||
|
|
9e5c4b2efe | ||
|
|
99b351835e | ||
|
|
770fcc19c0 | ||
|
|
0dfc59fc21 | ||
|
|
1d9365d407 | ||
|
|
4b63c7009f | ||
|
|
941b3feb3d | ||
|
|
ee3556490a | ||
|
|
95553a597b | ||
|
|
49a1169878 | ||
|
|
83468e64a2 | ||
|
|
20aa9643d3 | ||
|
|
7e426ac0cd | ||
|
|
5d75d7d7af | ||
|
|
65d81745ed | ||
|
|
30f0848ac2 | ||
|
|
da7ec89471 | ||
|
|
4885a8abdb | ||
|
|
47ab2a32c0 | ||
|
|
bc494dac56 | ||
|
|
46fbae2f4f | ||
|
|
edeba22a2a | ||
|
|
2cd11efa9d | ||
|
|
5f9fd934af | ||
|
|
3bd42590cc | ||
|
|
81e897a07a | ||
|
|
a63dc0c51b | ||
|
|
1b18429eca | ||
|
|
bf60526e63 | ||
|
|
7166ba7802 | ||
|
|
5f2beb16a9 | ||
|
|
085d84e16e | ||
|
|
1f2a5d7dd7 | ||
|
|
fede96b7b2 | ||
|
|
1dc709446a | ||
|
|
60cf928e51 | ||
|
|
3fb29ecc61 | ||
|
|
d9b3db4399 | ||
|
|
552865aa0d | ||
|
|
73e2cd2179 | ||
|
|
d1539a7c4f | ||
|
|
81bf447ef4 | ||
|
|
2ad57cab6b | ||
|
|
e506c5bdb8 | ||
|
|
6a27140165 | ||
|
|
2e3304c16f | ||
|
|
66f3c369fa | ||
|
|
d2c9189a7c | ||
|
|
855b6c3170 | ||
|
|
e098b3a522 | ||
|
|
7878cea369 | ||
|
|
08b283cb0c | ||
|
|
87ef5c1f72 | ||
|
|
36af368a8c | ||
|
|
e9ab52f7b5 | ||
|
|
f5a0db2078 | ||
|
|
b4acbbb57e | ||
|
|
f92d6ddd55 | ||
|
|
7d37b75c32 | ||
|
|
2cbe939412 | ||
|
|
f7424a7009 | ||
|
|
f50851913e | ||
|
|
e3d5ad2595 | ||
|
|
656808b20c | ||
|
|
9fee08daa3 | ||
|
|
cf96414f78 | ||
|
|
80e548df0a | ||
|
|
4bdaeba797 | ||
|
|
15f76ad355 | ||
|
|
f321c62edc | ||
|
|
1a98574c03 | ||
|
|
1ce3dada00 | ||
|
|
dab8c4a0e3 | ||
|
|
87438adc9a | ||
|
|
c385e24839 | ||
|
|
f87eaaa810 |
@@ -32,6 +32,7 @@
|
||||
"SwaggerUi": false,
|
||||
"jsyaml": false,
|
||||
"define": false,
|
||||
"sanitizeHtml": false,
|
||||
|
||||
// Global object
|
||||
// TODO: remove these
|
||||
|
||||
+14
@@ -1,5 +1,7 @@
|
||||
sudo: false
|
||||
language: node_js
|
||||
services:
|
||||
- docker
|
||||
node_js:
|
||||
- '4.2'
|
||||
install:
|
||||
@@ -7,3 +9,15 @@ install:
|
||||
- sh -e /etc/init.d/xvfb start
|
||||
- npm i -g jshint
|
||||
- npm install
|
||||
env:
|
||||
- DOCKER_IMAGE_NAME=swaggerapi/swagger-ui
|
||||
after_success:
|
||||
- if [ $DOCKER_HUB_USERNAME ]; then
|
||||
docker login --email=$DOCKER_HUB_EMAIL --username=$DOCKER_HUB_USERNAME --password=$DOCKER_HUB_PASSWORD;
|
||||
docker build -t $DOCKER_IMAGE_NAME .;
|
||||
if [ "$TRAVIS_TAG" != "master" && -z "$TRAVIS_TAG"]; then
|
||||
docker tag $DOCKER_IMAGE_NAME $DOCKER_IMAGE_NAME:$TRAVIS_TAG;
|
||||
fi;
|
||||
|
||||
docker push $DOCKER_IMAGE_NAME;
|
||||
fi;
|
||||
|
||||
+3
-2
@@ -1,12 +1,13 @@
|
||||
FROM alpine:3.3
|
||||
FROM alpine:3.4
|
||||
|
||||
MAINTAINER Roman Tarnavski
|
||||
|
||||
RUN apk add --update nginx
|
||||
RUN mkdir -p /run/nginx
|
||||
|
||||
COPY nginx.conf /etc/nginx/
|
||||
ADD ./dist/ /usr/share/nginx/html
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD nginx -g 'daemon off;'
|
||||
CMD nginx -g 'daemon off;'
|
||||
|
||||
@@ -24,8 +24,8 @@ The OpenAPI Specification has undergone 4 revisions since initial creation in 20
|
||||
|
||||
Swagger UI Version | Release Date | OpenAPI Spec compatibility | Notes | Status
|
||||
------------------ | ------------ | -------------------------- | ----- | ------
|
||||
2.2.2 | 2016-08-23 | 1.1, 1.2, 2.0 | [tag v.2.2.2](https://github.com/swagger-api/swagger-ui/tree/v2.2.2) |
|
||||
2.1.5 | 2016-07-20 | 1.1, 1.2, 2.0 | [tag v.2.1.5](https://github.com/swagger-api/swagger-ui/tree/v2.1.5) |
|
||||
2.2.6 | 2016-10-14 | 1.1, 1.2, 2.0 | [tag v2.2.6](https://github.com/swagger-api/swagger-ui/tree/v2.2.6) |
|
||||
2.1.5 | 2016-07-20 | 1.1, 1.2, 2.0 | [tag v2.1.5](https://github.com/swagger-api/swagger-ui/tree/v2.1.5) |
|
||||
2.0.24 | 2014-09-12 | 1.1, 1.2 | [tag v2.0.24](https://github.com/swagger-api/swagger-ui/tree/v2.0.24) |
|
||||
1.0.13 | 2013-03-08 | 1.1, 1.2 | [tag v1.0.13](https://github.com/swagger-api/swagger-ui/tree/v1.0.13) |
|
||||
1.0.1 | 2011-10-11 | 1.0, 1.1 | [tag v1.0.1](https://github.com/swagger-api/swagger-ui/tree/v1.0.1) |
|
||||
@@ -50,6 +50,13 @@ You can rebuild swagger-ui on your own to tweak it or just so you can say you di
|
||||
### Development
|
||||
Use `npm run serve` to make a new build, watch for changes, and serve the result at http://localhost:8080/.
|
||||
|
||||
### Running with Docker
|
||||
|
||||
```
|
||||
docker pull swaggerapi/swagger-ui
|
||||
docker run -p 80:8080 swaggerapi/swagger-ui
|
||||
```
|
||||
|
||||
### Build using Docker
|
||||
|
||||
To build swagger-ui using a docker container:
|
||||
|
||||
+1
-6
@@ -20,10 +20,5 @@
|
||||
"name": "Mohsen Azimi",
|
||||
"email": "me@azimi.me"
|
||||
}
|
||||
],
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.x-dev"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Vendored
+1
-1367
File diff suppressed because one or more lines are too long
Vendored
+1
-125
@@ -1,125 +1 @@
|
||||
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */
|
||||
html,
|
||||
body,
|
||||
div,
|
||||
span,
|
||||
applet,
|
||||
object,
|
||||
iframe,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
blockquote,
|
||||
pre,
|
||||
a,
|
||||
abbr,
|
||||
acronym,
|
||||
address,
|
||||
big,
|
||||
cite,
|
||||
code,
|
||||
del,
|
||||
dfn,
|
||||
em,
|
||||
img,
|
||||
ins,
|
||||
kbd,
|
||||
q,
|
||||
s,
|
||||
samp,
|
||||
small,
|
||||
strike,
|
||||
strong,
|
||||
sub,
|
||||
sup,
|
||||
tt,
|
||||
var,
|
||||
b,
|
||||
u,
|
||||
i,
|
||||
center,
|
||||
dl,
|
||||
dt,
|
||||
dd,
|
||||
ol,
|
||||
ul,
|
||||
li,
|
||||
fieldset,
|
||||
form,
|
||||
label,
|
||||
legend,
|
||||
table,
|
||||
caption,
|
||||
tbody,
|
||||
tfoot,
|
||||
thead,
|
||||
tr,
|
||||
th,
|
||||
td,
|
||||
article,
|
||||
aside,
|
||||
canvas,
|
||||
details,
|
||||
embed,
|
||||
figure,
|
||||
figcaption,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
menu,
|
||||
nav,
|
||||
output,
|
||||
ruby,
|
||||
section,
|
||||
summary,
|
||||
time,
|
||||
mark,
|
||||
audio,
|
||||
video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
menu,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol,
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote,
|
||||
q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before,
|
||||
blockquote:after,
|
||||
q:before,
|
||||
q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}table{border-collapse:collapse;border-spacing:0}
|
||||
Vendored
+1
-1494
File diff suppressed because one or more lines are too long
Vendored
+1
-250
@@ -1,250 +1 @@
|
||||
.swagger-section #header a#logo {
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: transparent url(../images/logo.png) no-repeat left center;
|
||||
padding: 20px 0 20px 40px;
|
||||
}
|
||||
#text-head {
|
||||
font-size: 80px;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
color: #ffffff;
|
||||
float: right;
|
||||
margin-right: 20%;
|
||||
}
|
||||
.navbar-fixed-top .navbar-nav {
|
||||
height: auto;
|
||||
}
|
||||
.navbar-fixed-top .navbar-brand {
|
||||
height: auto;
|
||||
}
|
||||
.navbar-header {
|
||||
height: auto;
|
||||
}
|
||||
.navbar-inverse {
|
||||
background-color: #000;
|
||||
border-color: #000;
|
||||
}
|
||||
#navbar-brand {
|
||||
margin-left: 20%;
|
||||
}
|
||||
.navtext {
|
||||
font-size: 10px;
|
||||
}
|
||||
.h1,
|
||||
h1 {
|
||||
font-size: 60px;
|
||||
}
|
||||
.navbar-default .navbar-header .navbar-brand {
|
||||
color: #a2dfee;
|
||||
}
|
||||
/* tag titles */
|
||||
.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a {
|
||||
color: #393939;
|
||||
font-family: 'Arvo', serif;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover {
|
||||
color: black;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 {
|
||||
color: #525252;
|
||||
padding-left: 0px;
|
||||
display: block;
|
||||
clear: none;
|
||||
float: left;
|
||||
font-family: 'Arvo', serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
.navbar-default .navbar-collapse,
|
||||
.navbar-default .navbar-form {
|
||||
border-color: #0A0A0A;
|
||||
}
|
||||
.container1 {
|
||||
width: 1500px;
|
||||
margin: auto;
|
||||
margin-top: 0;
|
||||
background-image: url('../images/shield.png');
|
||||
background-repeat: no-repeat;
|
||||
background-position: -40px -20px;
|
||||
margin-bottom: 210px;
|
||||
}
|
||||
.container-inner {
|
||||
width: 1200px;
|
||||
margin: auto;
|
||||
background-color: rgba(223, 227, 228, 0.75);
|
||||
padding-bottom: 40px;
|
||||
padding-top: 40px;
|
||||
border-radius: 15px;
|
||||
}
|
||||
.header-content {
|
||||
padding: 0;
|
||||
width: 1000px;
|
||||
}
|
||||
.title1 {
|
||||
font-size: 80px;
|
||||
font-family: 'Vollkorn', serif;
|
||||
color: #404040;
|
||||
text-align: center;
|
||||
padding-top: 40px;
|
||||
padding-bottom: 100px;
|
||||
}
|
||||
#icon {
|
||||
margin-top: -18px;
|
||||
}
|
||||
.subtext {
|
||||
font-size: 25px;
|
||||
font-style: italic;
|
||||
color: #08b;
|
||||
text-align: right;
|
||||
padding-right: 250px;
|
||||
}
|
||||
.bg-primary {
|
||||
background-color: #00468b;
|
||||
}
|
||||
.navbar-default .nav > li > a,
|
||||
.navbar-default .nav > li > a:focus {
|
||||
color: #08b;
|
||||
}
|
||||
.navbar-default .nav > li > a,
|
||||
.navbar-default .nav > li > a:hover {
|
||||
color: #08b;
|
||||
}
|
||||
.navbar-default .nav > li > a,
|
||||
.navbar-default .nav > li > a:focus:hover {
|
||||
color: #08b;
|
||||
}
|
||||
.text-faded {
|
||||
font-size: 25px;
|
||||
font-family: 'Vollkorn', serif;
|
||||
}
|
||||
.section-heading {
|
||||
font-family: 'Vollkorn', serif;
|
||||
font-size: 45px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
hr {
|
||||
border-color: #00468b;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.description {
|
||||
margin-top: 20px;
|
||||
padding-bottom: 200px;
|
||||
}
|
||||
.description li {
|
||||
font-family: 'Vollkorn', serif;
|
||||
font-size: 25px;
|
||||
color: #525252;
|
||||
margin-left: 28%;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.gap {
|
||||
margin-top: 200px;
|
||||
}
|
||||
.troubleshootingtext {
|
||||
color: rgba(255, 255, 255, 0.7);
|
||||
padding-left: 30%;
|
||||
}
|
||||
.troubleshootingtext li {
|
||||
list-style-type: circle;
|
||||
font-size: 25px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
.overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1000;
|
||||
}
|
||||
.block.response_body.json:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
.backdrop {
|
||||
color: blue;
|
||||
}
|
||||
#myModal {
|
||||
height: 100%;
|
||||
}
|
||||
.modal-backdrop {
|
||||
bottom: 0;
|
||||
position: fixed;
|
||||
}
|
||||
.curl {
|
||||
padding: 10px;
|
||||
font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
|
||||
font-size: 0.9em;
|
||||
max-height: 400px;
|
||||
margin-top: 5px;
|
||||
overflow-y: auto;
|
||||
background-color: #fcf6db;
|
||||
border: 1px solid #e5e0c6;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.curl_title {
|
||||
font-size: 1.1em;
|
||||
margin: 0;
|
||||
padding: 15px 0 5px;
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
|
||||
font-weight: 500;
|
||||
line-height: 1.1;
|
||||
}
|
||||
.footer {
|
||||
display: none;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap h2 {
|
||||
padding: 0;
|
||||
}
|
||||
h2 {
|
||||
margin: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.markdown p {
|
||||
font-size: 15px;
|
||||
font-family: 'Arvo', serif;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap .code {
|
||||
font-size: 15px;
|
||||
font-family: 'Arvo', serif;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap b {
|
||||
font-family: 'Arvo', serif;
|
||||
}
|
||||
#signin:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
.dropdown-menu {
|
||||
padding: 15px;
|
||||
}
|
||||
.navbar-right .dropdown-menu {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
#signinbutton {
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: #08b;
|
||||
}
|
||||
.navbar-default .nav > li .details {
|
||||
color: #000000;
|
||||
text-transform: none;
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-style: italic;
|
||||
line-height: 20px;
|
||||
top: -2px;
|
||||
}
|
||||
.navbar-default .nav > li .details:hover {
|
||||
color: black;
|
||||
}
|
||||
#signout {
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: #08b;
|
||||
}
|
||||
.swagger-section #header a#logo{font-size:1.5em;font-weight:700;text-decoration:none;padding:20px 0 20px 40px}#text-head{font-size:80px;font-family:Roboto,sans-serif;color:#fff;float:right;margin-right:20%}.navbar-fixed-top .navbar-brand,.navbar-fixed-top .navbar-nav,.navbar-header{height:auto}.navbar-inverse{background-color:#000;border-color:#000}#navbar-brand{margin-left:20%}.navtext{font-size:10px}.h1,h1{font-size:60px}.navbar-default .navbar-header .navbar-brand{color:#a2dfee}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a{color:#393939;font-family:Arvo,serif;font-size:1.5em}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2{color:#525252;padding-left:0;display:block;clear:none;float:left;font-family:Arvo,serif;font-weight:700}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#0a0a0a}.container1{width:1500px;margin:auto;margin-top:0;background-repeat:no-repeat;background-position:-40px -20px;margin-bottom:210px}.container-inner{width:1200px;margin:auto;background-color:hsla(192,8%,88%,.75);padding-bottom:40px;padding-top:40px;border-radius:15px}.header-content{padding:0;width:1000px}.title1{font-size:80px;font-family:Vollkorn,serif;color:#404040;text-align:center;padding-top:40px;padding-bottom:100px}#icon{margin-top:-18px}.subtext{font-size:25px;font-style:italic;color:#08b;text-align:right;padding-right:250px}.bg-primary{background-color:#00468b}.navbar-default .nav>li>a,.navbar-default .nav>li>a:focus,.navbar-default .nav>li>a:focus:hover,.navbar-default .nav>li>a:hover{color:#08b}.text-faded{font-size:25px;font-family:Vollkorn,serif}.section-heading{font-family:Vollkorn,serif;font-size:45px;padding-bottom:10px}hr{border-color:#00468b;padding-bottom:10px}.description{margin-top:20px;padding-bottom:200px}.description li{font-family:Vollkorn,serif;font-size:25px;color:#525252;margin-left:28%;padding-top:5px}.gap{margin-top:200px}.troubleshootingtext{color:hsla(0,0%,100%,.7);padding-left:30%}.troubleshootingtext li{list-style-type:circle;font-size:25px;padding-bottom:5px}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.block.response_body.json:hover{cursor:pointer}.backdrop{color:blue}#myModal{height:100%}.modal-backdrop{bottom:0;position:fixed}.curl{padding:10px;font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;font-size:.9em;max-height:400px;margin-top:5px;overflow-y:auto;background-color:#fcf6db;border:1px solid #e5e0c6;border-radius:4px}.curl_title{font-size:1.1em;margin:0;padding:15px 0 5px;font-family:Open Sans,Helvetica Neue,Arial,sans-serif;font-weight:500;line-height:1.1}.footer{display:none}.swagger-section .swagger-ui-wrap h2{padding:0}h2{margin:0;margin-bottom:5px}.markdown p,.swagger-section .swagger-ui-wrap .code{font-size:15px;font-family:Arvo,serif}.swagger-section .swagger-ui-wrap b{font-family:Arvo,serif}#signin:hover{cursor:pointer}.dropdown-menu{padding:15px}.navbar-right .dropdown-menu{left:0;right:auto}#signinbutton{width:100%;height:32px;font-size:13px;font-weight:700;color:#08b}.navbar-default .nav>li .details{color:#000;text-transform:none;font-size:15px;font-weight:400;font-family:Open Sans,sans-serif;font-style:italic;line-height:20px;top:-2px}.navbar-default .nav>li .details:hover{color:#000}#signout{width:100%;height:32px;font-size:13px;font-weight:700;color:#08b}
|
||||
Vendored
-14
@@ -1,14 +0,0 @@
|
||||
/* Google Font's Droid Sans */
|
||||
@font-face {
|
||||
font-family: 'Droid Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Droid Sans'), local('DroidSans'), url('../fonts/DroidSans.ttf'), format('truetype');
|
||||
}
|
||||
/* Google Font's Droid Sans Bold */
|
||||
@font-face {
|
||||
font-family: 'Droid Sans';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Droid Sans Bold'), local('DroidSans-Bold'), url('../fonts/DroidSans-Bold.ttf'), format('truetype');
|
||||
}
|
||||
|
||||
Vendored
+3
-1
@@ -2,6 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge">
|
||||
<title>Swagger UI</title>
|
||||
<link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32" />
|
||||
<link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16" />
|
||||
@@ -74,7 +75,8 @@
|
||||
docExpansion: "none",
|
||||
jsonEditor: false,
|
||||
defaultModelRendering: 'schema',
|
||||
showRequestHeaders: false
|
||||
showRequestHeaders: false,
|
||||
showOperationIds: false
|
||||
});
|
||||
|
||||
window.swaggerUi.load();
|
||||
|
||||
Vendored
+56
@@ -0,0 +1,56 @@
|
||||
'use strict';
|
||||
|
||||
/* jshint quotmark: double */
|
||||
window.SwaggerTranslator.learn({
|
||||
"Warning: Deprecated":"Προειδοποίηση: Έχει αποσυρθεί",
|
||||
"Implementation Notes":"Σημειώσεις Υλοποίησης",
|
||||
"Response Class":"Απόκριση",
|
||||
"Status":"Κατάσταση",
|
||||
"Parameters":"Παράμετροι",
|
||||
"Parameter":"Παράμετρος",
|
||||
"Value":"Τιμή",
|
||||
"Description":"Περιγραφή",
|
||||
"Parameter Type":"Τύπος Παραμέτρου",
|
||||
"Data Type":"Τύπος Δεδομένων",
|
||||
"Response Messages":"Μηνύματα Απόκρισης",
|
||||
"HTTP Status Code":"Κωδικός Κατάστασης HTTP",
|
||||
"Reason":"Αιτιολογία",
|
||||
"Response Model":"Μοντέλο Απόκρισης",
|
||||
"Request URL":"URL Αιτήματος",
|
||||
"Response Body":"Σώμα Απόκρισης",
|
||||
"Response Code":"Κωδικός Απόκρισης",
|
||||
"Response Headers":"Επικεφαλίδες Απόκρισης",
|
||||
"Hide Response":"Απόκρυψη Απόκρισης",
|
||||
"Headers":"Επικεφαλίδες",
|
||||
"Try it out!":"Δοκιμάστε το!",
|
||||
"Show/Hide":"Εμφάνιση/Απόκρυψη",
|
||||
"List Operations":"Λίστα Λειτουργιών",
|
||||
"Expand Operations":"Ανάπτυξη Λειτουργιών",
|
||||
"Raw":"Ακατέργαστο",
|
||||
"can't parse JSON. Raw result":"αδυναμία ανάλυσης JSON. Ακατέργαστο αποτέλεσμα",
|
||||
"Example Value":"Παράδειγμα Τιμής",
|
||||
"Model Schema":"Σχήμα Μοντέλου",
|
||||
"Model":"Μοντέλο",
|
||||
"Click to set as parameter value":"Πατήστε για να θέσετε τιμή παραμέτρου",
|
||||
"apply":"εφαρμογή",
|
||||
"Username":"Όνομα χρήση",
|
||||
"Password":"Κωδικός πρόσβασης",
|
||||
"Terms of service":"Όροι χρήσης",
|
||||
"Created by":"Δημιουργήθηκε από",
|
||||
"See more at":"Δείτε περισσότερα στο",
|
||||
"Contact the developer":"Επικοινωνήστε με τον προγραμματιστή",
|
||||
"api version":"έκδοση api",
|
||||
"Response Content Type":"Τύπος Περιεχομένου Απόκρισης",
|
||||
"Parameter content type:":"Τύπος περιεχομένου παραμέτρου:",
|
||||
"fetching resource":"παραλαβή πόρου",
|
||||
"fetching resource list":"παραλαβή λίστας πόρων",
|
||||
"Explore":"Εξερεύνηση",
|
||||
"Show Swagger Petstore Example Apis":"Εμφάνιση Api Δειγμάτων Petstore του Swagger",
|
||||
"Can't read from server. It may not have the appropriate access-control-origin settings.":"Αδυναμία ανάγνωσης από τον εξυπηρετητή. Μπορεί να μην έχει κατάλληλες ρυθμίσεις για access-control-origin.",
|
||||
"Please specify the protocol for":"Παρακαλώ προσδιορίστε το πρωτόκολλο για",
|
||||
"Can't read swagger JSON from":"Αδυναμία ανάγνωσης swagger JSON από",
|
||||
"Finished Loading Resource Information. Rendering Swagger UI":"Ολοκλήρωση Φόρτωσης Πληροφορικών Πόρου. Παρουσίαση Swagger UI",
|
||||
"Unable to read api":"Αδυναμία ανάγνωσης api",
|
||||
"from path":"από το μονοπάτι",
|
||||
"server returned":"ο εξυπηρετηρής επέστρεψε"
|
||||
});
|
||||
Vendored
+6
-3
@@ -26,22 +26,25 @@ window.SwaggerTranslator.learn({
|
||||
"Show/Hide":"表示/非表示",
|
||||
"List Operations":"操作一覧",
|
||||
"Expand Operations":"操作の展開",
|
||||
"Raw":"Raw",
|
||||
"Raw":"未加工",
|
||||
"can't parse JSON. Raw result":"JSONへ解釈できません. 未加工の結果",
|
||||
"Example Value":"値の例",
|
||||
"Model Schema":"モデルスキーマ",
|
||||
"Model":"モデル",
|
||||
"Click to set as parameter value":"パラメータ値と設定するにはクリック",
|
||||
"apply":"実行",
|
||||
"Username":"ユーザ名",
|
||||
"Password":"パスワード",
|
||||
"Terms of service":"サービス利用規約",
|
||||
"Created by":"Created by",
|
||||
"See more at":"See more at",
|
||||
"See more at":"詳細を見る",
|
||||
"Contact the developer":"開発者に連絡",
|
||||
"api version":"APIバージョン",
|
||||
"Response Content Type":"レスポンス コンテンツタイプ",
|
||||
"Parameter content type:":"パラメータコンテンツタイプ:",
|
||||
"fetching resource":"リソースの取得",
|
||||
"fetching resource list":"リソース一覧の取得",
|
||||
"Explore":"Explore",
|
||||
"Explore":"調査",
|
||||
"Show Swagger Petstore Example Apis":"SwaggerペットストアAPIの表示",
|
||||
"Can't read from server. It may not have the appropriate access-control-origin settings.":"サーバから読み込めません. 適切なaccess-control-origin設定を持っていない可能性があります.",
|
||||
"Please specify the protocol for":"プロトコルを指定してください",
|
||||
|
||||
Vendored
+3
@@ -28,6 +28,8 @@ window.SwaggerTranslator.learn({
|
||||
"Expand Operations":"展开操作",
|
||||
"Raw":"原始",
|
||||
"can't parse JSON. Raw result":"无法解析JSON. 原始结果",
|
||||
"Example Value":"示例",
|
||||
"Click to set as parameter value":"点击设置参数",
|
||||
"Model Schema":"模型架构",
|
||||
"Model":"模型",
|
||||
"apply":"应用",
|
||||
@@ -39,6 +41,7 @@ window.SwaggerTranslator.learn({
|
||||
"Contact the developer":"联系开发者",
|
||||
"api version":"api版本",
|
||||
"Response Content Type":"响应Content Type",
|
||||
"Parameter content type:":"参数类型:",
|
||||
"fetching resource":"正在获取资源",
|
||||
"fetching resource list":"正在获取资源列表",
|
||||
"Explore":"浏览",
|
||||
|
||||
Vendored
+1
-15
File diff suppressed because one or more lines are too long
Vendored
+1
-2065
File diff suppressed because one or more lines are too long
Vendored
+3
-4608
File diff suppressed because one or more lines are too long
Vendored
+1
-2
File diff suppressed because one or more lines are too long
+1
-34
@@ -1,34 +1 @@
|
||||
'use strict';
|
||||
|
||||
(function () {
|
||||
var configure, highlightBlock;
|
||||
|
||||
configure = hljs.configure;
|
||||
// "extending" hljs.configure method
|
||||
hljs.configure = function _configure (options) {
|
||||
var size = options.highlightSizeThreshold;
|
||||
|
||||
// added highlightSizeThreshold option to set maximum size
|
||||
// of processed string. Set to null if not a number
|
||||
hljs.highlightSizeThreshold = size === +size ? size : null;
|
||||
|
||||
configure.call(this, options);
|
||||
};
|
||||
|
||||
highlightBlock = hljs.highlightBlock;
|
||||
|
||||
// "extending" hljs.highlightBlock method
|
||||
hljs.highlightBlock = function _highlightBlock (el) {
|
||||
var innerHTML = el.innerHTML;
|
||||
var size = hljs.highlightSizeThreshold;
|
||||
|
||||
// check if highlightSizeThreshold is not set or element innerHTML
|
||||
// is less than set option highlightSizeThreshold
|
||||
if (size == null || size > innerHTML.length) {
|
||||
// proceed with hljs.highlightBlock
|
||||
highlightBlock.call(hljs, el);
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
"use strict";!function(){var h,l;h=hljs.configure,hljs.configure=function(l){var i=l.highlightSizeThreshold;hljs.highlightSizeThreshold=i===+i?i:null,h.call(this,l)},l=hljs.highlightBlock,hljs.highlightBlock=function(h){var i=h.innerHTML,g=hljs.highlightSizeThreshold;(null==g||g>i.length)&&l.call(hljs,h)}}();
|
||||
Vendored
+3
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-18
@@ -1,18 +1 @@
|
||||
/*
|
||||
* jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
|
||||
* http://benalman.com/projects/jquery-bbq-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
|
||||
/*
|
||||
* jQuery hashchange event - v1.2 - 2/11/2010
|
||||
* http://benalman.com/projects/jquery-hashchange-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
|
||||
!function(e,t){function n(e){return"string"==typeof e}function r(e){var t=g.call(arguments,1);return function(){return e.apply(this,t.concat(g.call(arguments)))}}function o(e){return e.replace(/^[^#]*#?(.*)$/,"$1")}function a(e){return e.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function i(r,o,a,i,c){var u,s,p,h,d;return i!==f?(p=a.match(r?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/),d=p[3]||"",2===c&&n(i)?s=i.replace(r?R:E,""):(h=l(p[2]),i=n(i)?l[r?A:w](i):i,s=2===c?i:1===c?e.extend({},i,h):e.extend({},h,i),s=b(s),r&&(s=s.replace(m,y))),u=p[1]+(r?"#":s||!p[1]?"?":"")+s+d):u=o(a!==f?a:t[S][q]),u}function c(e,t,r){return t===f||"boolean"==typeof t?(r=t,t=b[e?A:w]()):t=n(t)?t.replace(e?R:E,""):t,l(t,r)}function u(t,r,o,a){return n(o)||"object"==typeof o||(a=o,o=r,r=f),this.each(function(){var n=e(this),i=r||v()[(this.nodeName||"").toLowerCase()]||"",c=i&&n.attr(i)||"";n.attr(i,b[t](c,o,a))})}var f,s,l,p,h,d,v,m,g=Array.prototype.slice,y=decodeURIComponent,b=e.param,$=e.bbq=e.bbq||{},x=e.event.special,j="hashchange",w="querystring",A="fragment",N="elemUrlAttr",S="location",q="href",C="src",E=/^.*\?|#.*$/g,R=/^.*\#/,U={};b[w]=r(i,0,a),b[A]=s=r(i,1,o),s.noEscape=function(t){t=t||"";var n=e.map(t.split(""),encodeURIComponent);m=new RegExp(n.join("|"),"g")},s.noEscape(",/"),e.deparam=l=function(t,n){var r={},o={"true":!0,"false":!1,"null":null};return e.each(t.replace(/\+/g," ").split("&"),function(t,a){var i,c=a.split("="),u=y(c[0]),s=r,l=0,p=u.split("]["),h=p.length-1;if(/\[/.test(p[0])&&/\]$/.test(p[h])?(p[h]=p[h].replace(/\]$/,""),p=p.shift().split("[").concat(p),h=p.length-1):h=0,2===c.length)if(i=y(c[1]),n&&(i=i&&!isNaN(i)?+i:"undefined"===i?f:o[i]!==f?o[i]:i),h)for(;l<=h;l++)u=""===p[l]?s.length:p[l],s=s[u]=l<h?s[u]||(p[l+1]&&isNaN(p[l+1])?{}:[]):i;else e.isArray(r[u])?r[u].push(i):r[u]!==f?r[u]=[r[u],i]:r[u]=i;else u&&(r[u]=n?f:"")}),r},l[w]=r(c,0),l[A]=p=r(c,1),e[N]||(e[N]=function(t){return e.extend(U,t)})({a:q,base:q,iframe:C,img:C,input:C,form:"action",link:q,script:C}),v=e[N],e.fn[w]=r(u,w),e.fn[A]=r(u,A),$.pushState=h=function(e,r){n(e)&&/^#/.test(e)&&r===f&&(r=2);var o=e!==f,a=s(t[S][q],o?e:{},o?r:2);t[S][q]=a+(/#/.test(a)?"":"#")},$.getState=d=function(e,t){return e===f||"boolean"==typeof e?p(e):p(t)[e]},$.removeState=function(t){var n={};t!==f&&(n=d(),e.each(e.isArray(t)?t:arguments,function(e,t){delete n[t]})),h(n,2)},x[j]=e.extend(x[j],{add:function(t){function n(e){var t=e[A]=s();e.getState=function(e,n){return e===f||"boolean"==typeof e?l(t,e):l(t,n)[e]},r.apply(this,arguments)}var r;return e.isFunction(t)?(r=t,n):(r=t.handler,void(t.handler=n))}})}(jQuery,this),function(e,t,n){function r(e){return e=e||t[i][u],e.replace(/^[^#]*#?(.*)$/,"$1")}var o,a=e.event.special,i="location",c="hashchange",u="href",f=e.browser,s=document.documentMode,l=f.msie&&(s===n||s<8),p="on"+c in t&&!l;e[c+"Delay"]=100,a[c]=e.extend(a[c],{setup:function(){return!p&&void e(o.start)},teardown:function(){return!p&&void e(o.stop)}}),o=function(){function n(){f=s=function(e){return e},l&&(a=e('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow,s=function(){return r(a.document[i][u])},(f=function(e,t){if(e!==t){var n=a.document;n.open().close(),n[i].hash="#"+e}})(r()))}var o,a,f,s,p={};return p.start=function(){if(!o){var a=r();f||n(),function l(){var n=r(),p=s(a);n!==a?(f(a=n,p),e(t).trigger(c)):p!==a&&(t[i][u]=t[i][u].replace(/#.*/,"")+"#"+p),o=setTimeout(l,e[c+"Delay"])}()}},p.stop=function(){a||(o&&clearTimeout(o),o=0)},p}()}(jQuery,this);
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
(function(b){b.fn.slideto=function(a){a=b.extend({slide_duration:"slow",highlight_duration:3E3,highlight:true,highlight_color:"#FFFF99"},a);return this.each(function(){obj=b(this);b("body").animate({scrollTop:obj.offset().top},a.slide_duration,function(){a.highlight&&b.ui.version&&obj.effect("highlight",{color:a.highlight_color},a.highlight_duration)})})}})(jQuery);
|
||||
!function(i){i.fn.slideto=function(o){return o=i.extend({slide_duration:"slow",highlight_duration:3e3,highlight:!0,highlight_color:"#FFFF99"},o),this.each(function(){obj=i(this),i("body").animate({scrollTop:obj.offset().top},o.slide_duration,function(){o.highlight&&i.ui.version&&obj.effect("highlight",{color:o.highlight_color},o.highlight_duration)})})}}(jQuery);
|
||||
Vendored
+1
-8
@@ -1,8 +1 @@
|
||||
/*
|
||||
jQuery Wiggle
|
||||
Author: WonderGroup, Jordan Thomas
|
||||
URL: http://labs.wondergroup.com/demos/mini-ui/index.html
|
||||
License: MIT (http://en.wikipedia.org/wiki/MIT_License)
|
||||
*/
|
||||
jQuery.fn.wiggle=function(o){var d={speed:50,wiggles:3,travel:5,callback:null};var o=jQuery.extend(d,o);return this.each(function(){var cache=this;var wrap=jQuery(this).wrap('<div class="wiggle-wrap"></div>').css("position","relative");var calls=0;for(i=1;i<=o.wiggles;i++){jQuery(this).animate({left:"-="+o.travel},o.speed).animate({left:"+="+o.travel*2},o.speed*2).animate({left:"-="+o.travel},o.speed,function(){calls++;if(jQuery(cache).parent().hasClass('wiggle-wrap')){jQuery(cache).parent().replaceWith(cache);}
|
||||
if(calls==o.wiggles&&jQuery.isFunction(o.callback)){o.callback();}});}});};
|
||||
jQuery.fn.wiggle=function(e){var a={speed:50,wiggles:3,travel:5,callback:null},e=jQuery.extend(a,e);return this.each(function(){var a=this,l=(jQuery(this).wrap('<div class="wiggle-wrap"></div>').css("position","relative"),0);for(i=1;i<=e.wiggles;i++)jQuery(this).animate({left:"-="+e.travel},e.speed).animate({left:"+="+2*e.travel},2*e.speed).animate({left:"-="+e.travel},e.speed,function(){l++,jQuery(a).parent().hasClass("wiggle-wrap")&&jQuery(a).parent().replaceWith(a),l==e.wiggles&&jQuery.isFunction(e.callback)&&e.callback()})})};
|
||||
Vendored
+2
-3
File diff suppressed because one or more lines are too long
Vendored
+5
-11
File diff suppressed because one or more lines are too long
Vendored
+2
-102
File diff suppressed because one or more lines are too long
Vendored
+1
-1272
File diff suppressed because one or more lines are too long
Vendored
+1
-23
@@ -1,23 +1 @@
|
||||
if (typeof Object.assign != 'function') {
|
||||
(function () {
|
||||
Object.assign = function (target) {
|
||||
'use strict';
|
||||
if (target === undefined || target === null) {
|
||||
throw new TypeError('Cannot convert undefined or null to object');
|
||||
}
|
||||
|
||||
var output = Object(target);
|
||||
for (var index = 1; index < arguments.length; index++) {
|
||||
var source = arguments[index];
|
||||
if (source !== undefined && source !== null) {
|
||||
for (var nextKey in source) {
|
||||
if (Object.prototype.hasOwnProperty.call(source, nextKey)) {
|
||||
output[nextKey] = source[nextKey];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return output;
|
||||
};
|
||||
})();
|
||||
}
|
||||
"function"!=typeof Object.assign&&!function(){Object.assign=function(n){"use strict";if(void 0===n||null===n)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(n),o=1;o<arguments.length;o++){var r=arguments[o];if(void 0!==r&&null!==r)for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])}return t}}();
|
||||
Vendored
+4
File diff suppressed because one or more lines are too long
Vendored
+1
-347
File diff suppressed because one or more lines are too long
Vendored
+3
-3
@@ -1,6 +1,6 @@
|
||||
<script>
|
||||
var qp = null;
|
||||
if(window.location.hash) {
|
||||
if(/code|token|error/.test(window.location.hash)) {
|
||||
qp = location.hash.substring(1);
|
||||
}
|
||||
else {
|
||||
@@ -11,10 +11,10 @@ qp = qp ? JSON.parse('{"' + qp.replace(/&/g, '","').replace(/=/g,'":"') + '"}',
|
||||
return key===""?value:decodeURIComponent(value) }
|
||||
):{}
|
||||
|
||||
if (window.opener.swaggerUi.tokenUrl)
|
||||
if (window.opener.swaggerUiAuth.tokenUrl)
|
||||
window.opener.processOAuthCode(qp);
|
||||
else
|
||||
window.opener.onOAuthComplete(qp);
|
||||
|
||||
window.close();
|
||||
</script>
|
||||
</script>
|
||||
|
||||
Vendored
+1208
-626
File diff suppressed because one or more lines are too long
Vendored
+15
-10
File diff suppressed because one or more lines are too long
+29
-1
@@ -13,7 +13,11 @@ var connect = require('gulp-connect');
|
||||
var header = require('gulp-header');
|
||||
var order = require('gulp-order');
|
||||
var jshint = require('gulp-jshint');
|
||||
var runSequence = require('run-sequence');
|
||||
var cssnano = require('gulp-cssnano');
|
||||
var pkg = require('./package.json');
|
||||
var sourcemaps = require('gulp-sourcemaps');
|
||||
|
||||
|
||||
var banner = ['/**',
|
||||
' * <%= pkg.name %> - <%= pkg.description %>',
|
||||
@@ -50,6 +54,7 @@ function _dist() {
|
||||
return es.merge(
|
||||
gulp.src([
|
||||
'./node_modules/es5-shim/es5-shim.js',
|
||||
'./lib/sanitize-html.min.js',
|
||||
'./src/main/javascript/**/*.js',
|
||||
'./node_modules/swagger-client/browser/swagger-client.js'
|
||||
]),
|
||||
@@ -57,10 +62,12 @@ function _dist() {
|
||||
.src(['./src/main/template/templates.js'])
|
||||
.on('error', log)
|
||||
)
|
||||
.pipe(sourcemaps.init({loadMaps: true}))
|
||||
.pipe(order(['scripts.js', 'templates.js']))
|
||||
.pipe(concat('swagger-ui.js'))
|
||||
.pipe(wrap('(function(){<%= contents %>}).call(this);'))
|
||||
.pipe(header(banner, { pkg: pkg }))
|
||||
.pipe(sourcemaps.write())
|
||||
.pipe(gulp.dest('./dist'))
|
||||
.pipe(uglify())
|
||||
.on('error', log)
|
||||
@@ -125,6 +132,23 @@ gulp.task('copy-local-specs', function () {
|
||||
.on('error', log);
|
||||
});
|
||||
|
||||
gulp.task('minify-css', function() {
|
||||
/** Minify all CSS within dist folder, runs after dist process*/
|
||||
|
||||
return gulp.src('./dist/css/*.css')
|
||||
.pipe(cssnano())
|
||||
.pipe(gulp.dest('./dist/css'));
|
||||
});
|
||||
|
||||
gulp.task('uglify-libs', function() {
|
||||
/**
|
||||
* Minify all JS libs within the dist folder. A nice TODO would be to use versions from CDN
|
||||
*/
|
||||
gulp.src('./dist/lib/*.js')
|
||||
.pipe(uglify())
|
||||
.pipe(gulp.dest('./dist/lib'));
|
||||
});
|
||||
|
||||
/**
|
||||
* Watch for changes and recompile
|
||||
*/
|
||||
@@ -161,7 +185,11 @@ gulp.task('handlebars', function () {
|
||||
.on('error', log);
|
||||
});
|
||||
|
||||
gulp.task('default', ['dist', 'copy']);
|
||||
gulp.task('default', function(callback) {
|
||||
runSequence(['dist', 'copy'],
|
||||
['uglify-libs', 'minify-css'],
|
||||
callback);
|
||||
});
|
||||
gulp.task('serve', ['connect', 'watch']);
|
||||
gulp.task('dev', ['default'], function () {
|
||||
gulp.start('serve');
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
'use strict';
|
||||
|
||||
/* jshint quotmark: double */
|
||||
window.SwaggerTranslator.learn({
|
||||
"Warning: Deprecated":"Προειδοποίηση: Έχει αποσυρθεί",
|
||||
"Implementation Notes":"Σημειώσεις Υλοποίησης",
|
||||
"Response Class":"Απόκριση",
|
||||
"Status":"Κατάσταση",
|
||||
"Parameters":"Παράμετροι",
|
||||
"Parameter":"Παράμετρος",
|
||||
"Value":"Τιμή",
|
||||
"Description":"Περιγραφή",
|
||||
"Parameter Type":"Τύπος Παραμέτρου",
|
||||
"Data Type":"Τύπος Δεδομένων",
|
||||
"Response Messages":"Μηνύματα Απόκρισης",
|
||||
"HTTP Status Code":"Κωδικός Κατάστασης HTTP",
|
||||
"Reason":"Αιτιολογία",
|
||||
"Response Model":"Μοντέλο Απόκρισης",
|
||||
"Request URL":"URL Αιτήματος",
|
||||
"Response Body":"Σώμα Απόκρισης",
|
||||
"Response Code":"Κωδικός Απόκρισης",
|
||||
"Response Headers":"Επικεφαλίδες Απόκρισης",
|
||||
"Hide Response":"Απόκρυψη Απόκρισης",
|
||||
"Headers":"Επικεφαλίδες",
|
||||
"Try it out!":"Δοκιμάστε το!",
|
||||
"Show/Hide":"Εμφάνιση/Απόκρυψη",
|
||||
"List Operations":"Λίστα Λειτουργιών",
|
||||
"Expand Operations":"Ανάπτυξη Λειτουργιών",
|
||||
"Raw":"Ακατέργαστο",
|
||||
"can't parse JSON. Raw result":"αδυναμία ανάλυσης JSON. Ακατέργαστο αποτέλεσμα",
|
||||
"Example Value":"Παράδειγμα Τιμής",
|
||||
"Model Schema":"Σχήμα Μοντέλου",
|
||||
"Model":"Μοντέλο",
|
||||
"Click to set as parameter value":"Πατήστε για να θέσετε τιμή παραμέτρου",
|
||||
"apply":"εφαρμογή",
|
||||
"Username":"Όνομα χρήση",
|
||||
"Password":"Κωδικός πρόσβασης",
|
||||
"Terms of service":"Όροι χρήσης",
|
||||
"Created by":"Δημιουργήθηκε από",
|
||||
"See more at":"Δείτε περισσότερα στο",
|
||||
"Contact the developer":"Επικοινωνήστε με τον προγραμματιστή",
|
||||
"api version":"έκδοση api",
|
||||
"Response Content Type":"Τύπος Περιεχομένου Απόκρισης",
|
||||
"Parameter content type:":"Τύπος περιεχομένου παραμέτρου:",
|
||||
"fetching resource":"παραλαβή πόρου",
|
||||
"fetching resource list":"παραλαβή λίστας πόρων",
|
||||
"Explore":"Εξερεύνηση",
|
||||
"Show Swagger Petstore Example Apis":"Εμφάνιση Api Δειγμάτων Petstore του Swagger",
|
||||
"Can't read from server. It may not have the appropriate access-control-origin settings.":"Αδυναμία ανάγνωσης από τον εξυπηρετητή. Μπορεί να μην έχει κατάλληλες ρυθμίσεις για access-control-origin.",
|
||||
"Please specify the protocol for":"Παρακαλώ προσδιορίστε το πρωτόκολλο για",
|
||||
"Can't read swagger JSON from":"Αδυναμία ανάγνωσης swagger JSON από",
|
||||
"Finished Loading Resource Information. Rendering Swagger UI":"Ολοκλήρωση Φόρτωσης Πληροφορικών Πόρου. Παρουσίαση Swagger UI",
|
||||
"Unable to read api":"Αδυναμία ανάγνωσης api",
|
||||
"from path":"από το μονοπάτι",
|
||||
"server returned":"ο εξυπηρετηρής επέστρεψε"
|
||||
});
|
||||
+6
-3
@@ -26,22 +26,25 @@ window.SwaggerTranslator.learn({
|
||||
"Show/Hide":"表示/非表示",
|
||||
"List Operations":"操作一覧",
|
||||
"Expand Operations":"操作の展開",
|
||||
"Raw":"Raw",
|
||||
"Raw":"未加工",
|
||||
"can't parse JSON. Raw result":"JSONへ解釈できません. 未加工の結果",
|
||||
"Example Value":"値の例",
|
||||
"Model Schema":"モデルスキーマ",
|
||||
"Model":"モデル",
|
||||
"Click to set as parameter value":"パラメータ値と設定するにはクリック",
|
||||
"apply":"実行",
|
||||
"Username":"ユーザ名",
|
||||
"Password":"パスワード",
|
||||
"Terms of service":"サービス利用規約",
|
||||
"Created by":"Created by",
|
||||
"See more at":"See more at",
|
||||
"See more at":"詳細を見る",
|
||||
"Contact the developer":"開発者に連絡",
|
||||
"api version":"APIバージョン",
|
||||
"Response Content Type":"レスポンス コンテンツタイプ",
|
||||
"Parameter content type:":"パラメータコンテンツタイプ:",
|
||||
"fetching resource":"リソースの取得",
|
||||
"fetching resource list":"リソース一覧の取得",
|
||||
"Explore":"Explore",
|
||||
"Explore":"調査",
|
||||
"Show Swagger Petstore Example Apis":"SwaggerペットストアAPIの表示",
|
||||
"Can't read from server. It may not have the appropriate access-control-origin settings.":"サーバから読み込めません. 適切なaccess-control-origin設定を持っていない可能性があります.",
|
||||
"Please specify the protocol for":"プロトコルを指定してください",
|
||||
|
||||
@@ -28,6 +28,8 @@ window.SwaggerTranslator.learn({
|
||||
"Expand Operations":"展开操作",
|
||||
"Raw":"原始",
|
||||
"can't parse JSON. Raw result":"无法解析JSON. 原始结果",
|
||||
"Example Value":"示例",
|
||||
"Click to set as parameter value":"点击设置参数",
|
||||
"Model Schema":"模型架构",
|
||||
"Model":"模型",
|
||||
"apply":"应用",
|
||||
@@ -39,6 +41,7 @@ window.SwaggerTranslator.learn({
|
||||
"Contact the developer":"联系开发者",
|
||||
"api version":"api版本",
|
||||
"Response Content Type":"响应Content Type",
|
||||
"Parameter content type:":"参数类型:",
|
||||
"fetching resource":"正在获取资源",
|
||||
"fetching resource list":"正在获取资源列表",
|
||||
"Explore":"浏览",
|
||||
|
||||
Vendored
+6
File diff suppressed because one or more lines are too long
+25
-13
@@ -11,7 +11,7 @@ var additionalQueryStringParams;
|
||||
function handleLogin() {
|
||||
var scopes = [];
|
||||
|
||||
var auths = window.swaggerUi.api.authSchemes || window.swaggerUi.api.securityDefinitions;
|
||||
var auths = window.swaggerUiAuth.authSchemes || window.swaggerUiAuth.securityDefinitions;
|
||||
if(auths) {
|
||||
var key;
|
||||
var defs = auths;
|
||||
@@ -36,8 +36,7 @@ function handleLogin() {
|
||||
}
|
||||
}
|
||||
|
||||
if(window.swaggerUi.api
|
||||
&& window.swaggerUi.api.info) {
|
||||
if(window.swaggerUi.api && window.swaggerUi.api.info) {
|
||||
appName = window.swaggerUi.api.info.title;
|
||||
}
|
||||
|
||||
@@ -122,7 +121,18 @@ function handleLogin() {
|
||||
//TODO: merge not replace if scheme is different from any existing
|
||||
//(needs to be aware of schemes to do so correctly)
|
||||
window.enabledScopes=scopes;
|
||||
|
||||
|
||||
/**
|
||||
* Returns the name of the access token parameter returned by the server.
|
||||
*
|
||||
* @param dets
|
||||
* The authorisation scheme configuration.
|
||||
* @return the name of the access token parameter
|
||||
*/
|
||||
function getTokenName(dets) {
|
||||
return dets.vendorExtensions['x-tokenName'] || dets.tokenName;
|
||||
}
|
||||
|
||||
for (var key in authSchemes) {
|
||||
if (authSchemes.hasOwnProperty(key) && OAuthSchemeKeys.indexOf(key) != -1) { //only look at keys that match this scope.
|
||||
var flow = authSchemes[key].flow;
|
||||
@@ -130,13 +140,13 @@ function handleLogin() {
|
||||
if(authSchemes[key].type === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) {
|
||||
var dets = authSchemes[key];
|
||||
url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code');
|
||||
window.swaggerUi.tokenName = dets.tokenName || 'access_token';
|
||||
window.swaggerUi.tokenName = getTokenName(dets) || 'access_token';
|
||||
window.swaggerUi.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null);
|
||||
state = key;
|
||||
}
|
||||
else if(authSchemes[key].type === 'oauth2' && flow && (flow === 'application')) {
|
||||
var dets = authSchemes[key];
|
||||
window.swaggerUi.tokenName = dets.tokenName || 'access_token';
|
||||
window.swaggerUi.tokenName = getTokenName(dets) || 'access_token';
|
||||
clientCredentialsFlow(scopes, dets.tokenUrl, key);
|
||||
return;
|
||||
}
|
||||
@@ -148,13 +158,13 @@ function handleLogin() {
|
||||
var dets = o[t];
|
||||
var ep = dets.loginEndpoint.url;
|
||||
url = dets.loginEndpoint.url + '?response_type=token';
|
||||
window.swaggerUi.tokenName = dets.tokenName;
|
||||
window.swaggerUi.tokenName = getTokenName(dets);
|
||||
}
|
||||
else if (o.hasOwnProperty(t) && t === 'accessCode') {
|
||||
var dets = o[t];
|
||||
var ep = dets.tokenRequestEndpoint.url;
|
||||
url = dets.tokenRequestEndpoint.url + '?response_type=code';
|
||||
window.swaggerUi.tokenName = dets.tokenName;
|
||||
window.swaggerUi.tokenName = getTokenName(dets);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -271,7 +281,7 @@ window.processOAuthCode = function processOAuthCode(data) {
|
||||
|
||||
$.ajax(
|
||||
{
|
||||
url : window.swaggerUi.tokenUrl,
|
||||
url : window.swaggerUiAuth.tokenUrl,
|
||||
type: "POST",
|
||||
data: params,
|
||||
success:function(data, textStatus, jqXHR)
|
||||
@@ -285,7 +295,7 @@ window.processOAuthCode = function processOAuthCode(data) {
|
||||
});
|
||||
};
|
||||
|
||||
window.onOAuthComplete = function onOAuthComplete(token,OAuthSchemeKey) {
|
||||
window.onOAuthComplete = function onOAuthComplete(token, OAuthSchemeKey) {
|
||||
if(token) {
|
||||
if(token.error) {
|
||||
var checkbox = $('input[type=checkbox],.secured')
|
||||
@@ -295,7 +305,7 @@ window.onOAuthComplete = function onOAuthComplete(token,OAuthSchemeKey) {
|
||||
alert(token.error);
|
||||
}
|
||||
else {
|
||||
var b = token[window.swaggerUi.tokenName];
|
||||
var b = token[window.swaggerUiAuth.tokenName];
|
||||
if (!OAuthSchemeKey){
|
||||
OAuthSchemeKey = token.state;
|
||||
}
|
||||
@@ -339,8 +349,10 @@ window.onOAuthComplete = function onOAuthComplete(token,OAuthSchemeKey) {
|
||||
}
|
||||
}
|
||||
});
|
||||
window.swaggerUi.api.clientAuthorizations.add(window.OAuthSchemeKey, new SwaggerClient.ApiKeyAuthorization('Authorization', 'Bearer ' + b, 'header'));
|
||||
window.swaggerUi.load();
|
||||
if(typeof window.swaggerUi !== 'undefined') {
|
||||
window.swaggerUi.api.clientAuthorizations.add(window.swaggerUiAuth.OAuthSchemeKey, new SwaggerClient.ApiKeyAuthorization('Authorization', 'Bearer ' + b, 'header'));
|
||||
window.swaggerUi.load();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+27
-2
@@ -17,8 +17,33 @@ http {
|
||||
server_name localhost;
|
||||
|
||||
location / {
|
||||
root html;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
if ($request_method = 'OPTIONS') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
||||
#
|
||||
# Custom headers and headers various browsers *should* be OK with but aren't
|
||||
#
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
|
||||
#
|
||||
# Tell client that this pre-flight info is valid for 20 days
|
||||
#
|
||||
add_header 'Access-Control-Max-Age' 1728000;
|
||||
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
||||
add_header 'Content-Length' 0;
|
||||
return 204;
|
||||
}
|
||||
if ($request_method = 'POST') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
|
||||
}
|
||||
if ($request_method = 'GET') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-3
@@ -8,13 +8,13 @@
|
||||
}
|
||||
],
|
||||
"description": "Swagger UI is a dependency-free collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API",
|
||||
"version": "2.2.2",
|
||||
"version": "2.2.9",
|
||||
"homepage": "http://swagger.io",
|
||||
"license": "Apache-2.0",
|
||||
"main": "dist/swagger-ui.js",
|
||||
"scripts": {
|
||||
"build": "npm run handlebars && gulp",
|
||||
"handlebars": "./node_modules/handlebars/bin/handlebars ./src/main/template -f ./src/main/template/templates.js && gulp handlebars",
|
||||
"handlebars": "handlebars ./src/main/template -f ./src/main/template/templates.js && gulp handlebars",
|
||||
"serve": "gulp serve",
|
||||
"prejshint": "gulp",
|
||||
"jshint": "jshint .",
|
||||
@@ -37,12 +37,14 @@
|
||||
"gulp-clean": "^0.3.1",
|
||||
"gulp-concat": "^2.5.2",
|
||||
"gulp-connect": "^2.2.0",
|
||||
"gulp-cssnano": "^2.1.2",
|
||||
"gulp-declare": "^0.3.0",
|
||||
"gulp-header": "^1.2.2",
|
||||
"gulp-jshint": "^1.10.0",
|
||||
"gulp-less": "^3.0.1",
|
||||
"gulp-order": "^1.1.1",
|
||||
"gulp-rename": "^1.2.0",
|
||||
"gulp-sourcemaps": "^2.2.0",
|
||||
"gulp-uglify": "^1.1.0",
|
||||
"gulp-watch": "^4.1.1",
|
||||
"gulp-wrap": "^0.11.0",
|
||||
@@ -58,8 +60,9 @@
|
||||
"less": "^2.4.0",
|
||||
"mocha": "^2.1.0",
|
||||
"phantomjs": "1.9.19",
|
||||
"run-sequence": "^1.2.2",
|
||||
"selenium-webdriver": "^2.45.0",
|
||||
"sinon-chai": "2.8.0",
|
||||
"swagger-client": "2.1.18"
|
||||
"swagger-client": "2.1.28"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,7 +422,8 @@
|
||||
font-size: .85em;
|
||||
line-height: 1.2em;
|
||||
overflow: auto;
|
||||
max-height: 200px;
|
||||
height: 200px;
|
||||
resize: vertical;
|
||||
cursor: pointer;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav {
|
||||
@@ -837,6 +838,11 @@
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .nickname {
|
||||
color: #aaaaaa;
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access {
|
||||
color: black;
|
||||
}
|
||||
@@ -1344,6 +1350,10 @@
|
||||
.swagger-section .api-popup-actions {
|
||||
padding-top: 10px;
|
||||
}
|
||||
.swagger-section fieldset {
|
||||
padding-bottom: 10px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
#header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -422,7 +422,8 @@
|
||||
font-size: .85em;
|
||||
line-height: 1.2em;
|
||||
overflow: auto;
|
||||
max-height: 200px;
|
||||
height: 200px;
|
||||
resize: vertical;
|
||||
cursor: pointer;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav {
|
||||
@@ -837,6 +838,11 @@
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .nickname {
|
||||
color: #aaaaaa;
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
}
|
||||
.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access {
|
||||
color: black;
|
||||
}
|
||||
@@ -1344,6 +1350,10 @@
|
||||
.swagger-section .api-popup-actions {
|
||||
padding-top: 10px;
|
||||
}
|
||||
.swagger-section fieldset {
|
||||
padding-bottom: 10px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
.swagger-section .access {
|
||||
float: right;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: transparent url(../images/logo.png) no-repeat left center;
|
||||
padding: 20px 0 20px 40px;
|
||||
}
|
||||
#text-head {
|
||||
@@ -64,7 +63,6 @@ h1 {
|
||||
width: 1500px;
|
||||
margin: auto;
|
||||
margin-top: 0;
|
||||
background-image: url('../images/shield.png');
|
||||
background-repeat: no-repeat;
|
||||
background-position: -40px -20px;
|
||||
margin-bottom: 210px;
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
font-family: 'Droid Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Droid Sans'), local('DroidSans'), url('../fonts/DroidSans.ttf'), format('truetype');
|
||||
src: local('Droid Sans'), local('DroidSans'), url('../fonts/DroidSans.ttf') format('truetype');
|
||||
}
|
||||
/* Google Font's Droid Sans Bold */
|
||||
@font-face {
|
||||
font-family: 'Droid Sans';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Droid Sans Bold'), local('DroidSans-Bold'), url('../fonts/DroidSans-Bold.ttf'), format('truetype');
|
||||
src: local('Droid Sans Bold'), local('DroidSans-Bold'), url('../fonts/DroidSans-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge">
|
||||
<title>Swagger UI</title>
|
||||
<link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32" />
|
||||
<link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16" />
|
||||
@@ -74,7 +75,8 @@
|
||||
docExpansion: "none",
|
||||
jsonEditor: false,
|
||||
defaultModelRendering: 'schema',
|
||||
showRequestHeaders: false
|
||||
showRequestHeaders: false,
|
||||
showOperationIds: false
|
||||
});
|
||||
|
||||
window.swaggerUi.load();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script>
|
||||
var qp = null;
|
||||
if(window.location.hash) {
|
||||
if(/code|token|error/.test(window.location.hash)) {
|
||||
qp = location.hash.substring(1);
|
||||
}
|
||||
else {
|
||||
@@ -11,10 +11,10 @@ qp = qp ? JSON.parse('{"' + qp.replace(/&/g, '","').replace(/=/g,'":"') + '"}',
|
||||
return key===""?value:decodeURIComponent(value) }
|
||||
):{}
|
||||
|
||||
if (window.opener.swaggerUi.tokenUrl)
|
||||
if (window.opener.swaggerUiAuth.tokenUrl)
|
||||
window.opener.processOAuthCode(qp);
|
||||
else
|
||||
window.opener.onOAuthComplete(qp);
|
||||
|
||||
window.close();
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -1,34 +1,25 @@
|
||||
'use strict';
|
||||
/*jslint eqeq: true*/
|
||||
|
||||
var _sanitize = function(html) {
|
||||
// Strip the script tags from the html and inline evenhandlers
|
||||
html = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');
|
||||
html = html.replace(/(on\w+="[^"]*")*(on\w+='[^']*')*(on\w+=\w*\(\w*\))*/gi, '');
|
||||
Handlebars.registerHelper('sanitize', function (text) {
|
||||
var result;
|
||||
|
||||
return html;
|
||||
};
|
||||
if (text === undefined) { return ''; }
|
||||
|
||||
var sanitize =function (html) {
|
||||
var _html;
|
||||
result = sanitizeHtml(text, {
|
||||
allowedTags: [ 'div', 'span', 'b', 'i', 'em', 'strong', 'a', 'br', 'table', 'tbody', 'tr', 'th', 'td' ],
|
||||
allowedAttributes: {
|
||||
'div': [ 'class' ],
|
||||
'span': [ 'class' ],
|
||||
'table': [ 'class' ],
|
||||
'td': [ 'class' ],
|
||||
'th': [ 'colspan' ],
|
||||
'a': [ 'href' ]
|
||||
}
|
||||
});
|
||||
|
||||
if ( _.isUndefined(html) || _.isNull(html)) {
|
||||
return new Handlebars.SafeString('');
|
||||
}
|
||||
|
||||
if (_.isNumber(html)) {
|
||||
return new Handlebars.SafeString(html);
|
||||
}
|
||||
|
||||
if (_.isObject(html)){
|
||||
_html = JSON.stringify(html);
|
||||
return new Handlebars.SafeString(JSON.parse(_sanitize(_html)));
|
||||
}
|
||||
|
||||
return new Handlebars.SafeString(_sanitize(html));
|
||||
};
|
||||
|
||||
Handlebars.registerHelper('sanitize', sanitize);
|
||||
return new Handlebars.SafeString(result);
|
||||
});
|
||||
|
||||
Handlebars.registerHelper('renderTextParam', function(param) {
|
||||
var result, type = 'text', idAtt = '';
|
||||
@@ -55,7 +46,11 @@ Handlebars.registerHelper('renderTextParam', function(param) {
|
||||
idAtt = ' id=\'' + valueId + '\'';
|
||||
}
|
||||
|
||||
defaultValue = sanitize(defaultValue);
|
||||
if (defaultValue) {
|
||||
defaultValue = sanitizeHtml(defaultValue);
|
||||
} else {
|
||||
defaultValue = '';
|
||||
}
|
||||
|
||||
if(isArray) {
|
||||
result = '<textarea class=\'body-textarea' + (param.required ? ' required' : '') + '\' name=\'' + name + '\'' + idAtt + dataVendorExtensions;
|
||||
@@ -101,4 +96,4 @@ Handlebars.registerHelper('escape', function (value) {
|
||||
var text = Handlebars.Utils.escapeExpression(value);
|
||||
|
||||
return new Handlebars.SafeString(text);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
window.SwaggerUi.utils = {
|
||||
parseSecurityDefinitions: function (security) {
|
||||
var auths = Object.assign({}, window.swaggerUi.api.authSchemes || window.swaggerUi.api.securityDefinitions);
|
||||
parseSecurityDefinitions: function (security, securityDefinitions) {
|
||||
var auths = Object.assign({}, securityDefinitions);
|
||||
var oauth2Arr = [];
|
||||
var authsArr = [];
|
||||
var scopes = [];
|
||||
|
||||
@@ -98,25 +98,45 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({
|
||||
var redirectUrl = window.oAuthRedirectUrl || defaultRedirectUrl;
|
||||
var url = null;
|
||||
var scopes = _.map(auth.get('scopes'), function (scope) {
|
||||
return scope.scope;
|
||||
if(scope.checked) {
|
||||
return scope.scope;
|
||||
}
|
||||
});
|
||||
var container = window.swaggerUiAuth || (window.swaggerUiAuth = {});
|
||||
var state, dets, ep;
|
||||
window.OAuthSchemeKey = auth.get('title');
|
||||
container.OAuthSchemeKey = auth.get('title');
|
||||
|
||||
window.enabledScopes = scopes;
|
||||
var flow = auth.get('flow');
|
||||
|
||||
/**
|
||||
* Returns the name of the access token parameter returned by the server.
|
||||
*
|
||||
* @param dets
|
||||
* The authorisation scheme configuration.
|
||||
* @return the name of the access token parameter
|
||||
*/
|
||||
function getTokenName(dets) {
|
||||
return dets.vendorExtensions['x-tokenName'] || dets.tokenName;
|
||||
}
|
||||
|
||||
if(auth.get('type') === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) {
|
||||
dets = auth.attributes;
|
||||
url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code');
|
||||
window.swaggerUi.tokenName = dets.tokenName || 'access_token';
|
||||
window.swaggerUi.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null);
|
||||
state = window.OAuthSchemeKey;
|
||||
container.tokenName = getTokenName(dets) || 'access_token';
|
||||
container.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null);
|
||||
state = container.OAuthSchemeKey;
|
||||
}
|
||||
else if(auth.get('type') === 'oauth2' && flow && (flow === 'application')) {
|
||||
dets = auth.attributes;
|
||||
window.swaggerUi.tokenName = dets.tokenName || 'access_token';
|
||||
this.clientCredentialsFlow(scopes, dets.tokenUrl, window.OAuthSchemeKey);
|
||||
container.tokenName = getTokenName(dets) || 'access_token';
|
||||
this.clientCredentialsFlow(scopes, dets, container.OAuthSchemeKey);
|
||||
return;
|
||||
}
|
||||
else if(auth.get('type') === 'oauth2' && flow && (flow === 'password')) {
|
||||
dets = auth.attributes;
|
||||
container.tokenName = getTokenName(dets) || 'access_token';
|
||||
this.passwordFlow(scopes, dets, container.OAuthSchemeKey);
|
||||
return;
|
||||
}
|
||||
else if(auth.get('grantTypes')) {
|
||||
@@ -127,13 +147,13 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({
|
||||
dets = o[t];
|
||||
ep = dets.loginEndpoint.url;
|
||||
url = dets.loginEndpoint.url + '?response_type=token';
|
||||
window.swaggerUi.tokenName = dets.tokenName;
|
||||
container.tokenName = getTokenName(dets);
|
||||
}
|
||||
else if (o.hasOwnProperty(t) && t === 'accessCode') {
|
||||
dets = o[t];
|
||||
ep = dets.tokenRequestEndpoint.url;
|
||||
url = dets.tokenRequestEndpoint.url + '?response_type=code';
|
||||
window.swaggerUi.tokenName = dets.tokenName;
|
||||
container.tokenName = getTokenName(dets);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -153,17 +173,40 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({
|
||||
},
|
||||
|
||||
// taken from lib/swagger-oauth.js
|
||||
clientCredentialsFlow: function (scopes, tokenUrl, OAuthSchemeKey) {
|
||||
var params = {
|
||||
'client_id': clientId,
|
||||
'client_secret': clientSecret,
|
||||
clientCredentialsFlow: function (scopes, oauth, OAuthSchemeKey) {
|
||||
this.accessTokenRequest(scopes, oauth, OAuthSchemeKey, 'client_credentials');
|
||||
},
|
||||
|
||||
passwordFlow: function (scopes, oauth, OAuthSchemeKey) {
|
||||
this.accessTokenRequest(scopes, oauth, OAuthSchemeKey, 'password', {
|
||||
'username': oauth.username,
|
||||
'password': oauth.password
|
||||
});
|
||||
},
|
||||
|
||||
accessTokenRequest: function (scopes, oauth, OAuthSchemeKey, grantType, params) {
|
||||
params = $.extend({}, {
|
||||
'scope': scopes.join(' '),
|
||||
'grant_type': 'client_credentials'
|
||||
};
|
||||
'grant_type': grantType
|
||||
}, params);
|
||||
|
||||
var headers= {};
|
||||
|
||||
switch (oauth.clientAuthenticationType) {
|
||||
case 'basic':
|
||||
headers.Authorization = 'Basic ' + btoa(oauth.clientId + ':' + oauth.clientSecret);
|
||||
break;
|
||||
case 'request-body':
|
||||
params.client_id = oauth.clientId;
|
||||
params.client_secret = oauth.clientSecret;
|
||||
break;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url : tokenUrl,
|
||||
url : oauth.tokenUrl,
|
||||
type: 'POST',
|
||||
data: params,
|
||||
headers: headers,
|
||||
success: function (data)
|
||||
{
|
||||
onOAuthComplete(data, OAuthSchemeKey);
|
||||
@@ -174,5 +217,4 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -66,7 +66,11 @@ SwaggerUi.Collections.AuthsCollection = Backbone.Collection.extend({
|
||||
},
|
||||
|
||||
parse: function (data) {
|
||||
var authz = Object.assign({}, window.swaggerUi.api.clientAuthorizations.authz);
|
||||
var authz = {};
|
||||
|
||||
if(typeof window.swaggerUi !== 'undefined') {
|
||||
authz = Object.assign({}, window.swaggerUi.api.clientAuthorizations.authz);
|
||||
}
|
||||
|
||||
return _.map(data, function (auth, name) {
|
||||
var isBasic = authz[name] && auth.type === 'basic' && authz[name].username && authz[name].password;
|
||||
|
||||
@@ -96,7 +96,7 @@ SwaggerUi.Views.MainView = Backbone.View.extend({
|
||||
id = id + '_' + counter;
|
||||
counter += 1;
|
||||
}
|
||||
resource.id = SwaggerUi.utils.sanitize(id);
|
||||
resource.id = sanitizeHtml(id);
|
||||
resources[id] = resource;
|
||||
this.addResource(resource, this.model.auths);
|
||||
}
|
||||
@@ -111,7 +111,7 @@ SwaggerUi.Views.MainView = Backbone.View.extend({
|
||||
|
||||
addResource: function(resource, auths){
|
||||
// Render a resource and add it to resources li
|
||||
resource.id = resource.id.replace(/\s/g, '_');
|
||||
resource.id = resource.id.replace(/[^a-zA-Z\d]/g, function(str) { return str.charCodeAt(0); });
|
||||
|
||||
// Make all definitions available at the root of the resource so that they can
|
||||
// be loaded by the JSonEditor
|
||||
|
||||
@@ -2,10 +2,32 @@
|
||||
|
||||
SwaggerUi.Models.Oauth2Model = Backbone.Model.extend({
|
||||
defaults: {
|
||||
scopes: {}
|
||||
scopes: {},
|
||||
isPasswordFlow: false,
|
||||
clientAuthenticationType: 'none'
|
||||
},
|
||||
|
||||
initialize: function () {
|
||||
if(this.attributes && this.attributes.scopes) {
|
||||
var attributes = _.cloneDeep(this.attributes);
|
||||
var i, scopes = [];
|
||||
for(i in attributes.scopes) {
|
||||
var scope = attributes.scopes[i];
|
||||
if(typeof scope.description === 'string') {
|
||||
scopes[scope] = attributes.scopes[i];
|
||||
scopes.push(attributes.scopes[i]);
|
||||
}
|
||||
}
|
||||
attributes.scopes = scopes;
|
||||
this.attributes = attributes;
|
||||
}
|
||||
|
||||
if (this.attributes && this.attributes.flow) {
|
||||
var flow = this.attributes.flow;
|
||||
this.set('isPasswordFlow', flow === 'password');
|
||||
this.set('requireClientAuthentication', flow === 'application');
|
||||
this.set('clientAuthentication', flow === 'password' || flow === 'application');
|
||||
}
|
||||
this.on('change', this.validate);
|
||||
},
|
||||
|
||||
@@ -22,6 +44,16 @@ SwaggerUi.Models.Oauth2Model = Backbone.Model.extend({
|
||||
|
||||
validate: function () {
|
||||
var valid = false;
|
||||
if (this.get('isPasswordFlow') &&
|
||||
(!this.get('username'))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this.get('clientAuthenticationType') in ['basic', 'request-body'] &&
|
||||
(!this.get('clientId'))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var scp = this.get('scopes');
|
||||
var idx = _.findIndex(scp, function (o) {
|
||||
return o.checked === true;
|
||||
|
||||
@@ -2,11 +2,20 @@
|
||||
|
||||
SwaggerUi.Views.Oauth2View = Backbone.View.extend({
|
||||
events: {
|
||||
'change .oauth-scope': 'scopeChange'
|
||||
'change .oauth-scope': 'scopeChange',
|
||||
'change .oauth-username': 'setUsername',
|
||||
'change .oauth-password': 'setPassword',
|
||||
'change .oauth-client-authentication-type': 'setClientAuthenticationType',
|
||||
'change .oauth-client-id': 'setClientId',
|
||||
'change .oauth-client-secret': 'setClientSecret'
|
||||
},
|
||||
|
||||
template: Handlebars.templates.oauth2,
|
||||
|
||||
cls: {
|
||||
error: 'error'
|
||||
},
|
||||
|
||||
render: function () {
|
||||
this.$el.html(this.template(this.model.toJSON()));
|
||||
|
||||
@@ -18,5 +27,57 @@ SwaggerUi.Views.Oauth2View = Backbone.View.extend({
|
||||
var scope = $(e.target).data('scope');
|
||||
|
||||
this.model.setScopes(scope, val);
|
||||
},
|
||||
|
||||
setUsername: function (e) {
|
||||
var val= $(e.target).val();
|
||||
this.model.set('username', val);
|
||||
if (val) {
|
||||
$(e.target).removeClass(this.cls.error);
|
||||
}
|
||||
},
|
||||
|
||||
setPassword: function (e) {
|
||||
this.model.set('password', $(e.target).val());
|
||||
},
|
||||
|
||||
setClientAuthenticationType: function (e) {
|
||||
var type = $(e.target).val();
|
||||
var $el = this.$el;
|
||||
this.model.set('clientAuthenticationType', type);
|
||||
|
||||
switch(type) {
|
||||
case 'none':
|
||||
$el.find('.oauth-client-authentication').hide();
|
||||
break;
|
||||
case 'basic':
|
||||
case 'request-body':
|
||||
$el.find('.oauth-client-id').removeClass(this.cls.error);
|
||||
$el.find('.oauth-client-authentication').show();
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
setClientId: function (e) {
|
||||
var val = $(e.target).val();
|
||||
this.model.set('clientId', val);
|
||||
if (val) {
|
||||
$(e.target).removeClass(this.cls.error);
|
||||
}
|
||||
},
|
||||
|
||||
setClientSecret: function (e) {
|
||||
this.model.set('clientSecret', $(e.target).val());
|
||||
$(e.target).removeClass('error');
|
||||
},
|
||||
|
||||
highlightInvalid: function () {
|
||||
if (!this.model.get('username')) {
|
||||
this.$el.find('.oauth-username').addClass(this.cls.error);
|
||||
}
|
||||
|
||||
if (!this.model.get('clientId')) {
|
||||
this.$el.find('.oauth-client-id').addClass(this.cls.error);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -27,6 +27,10 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
if (opts.swaggerOptions.showRequestHeaders) {
|
||||
this.model.showRequestHeaders = true;
|
||||
}
|
||||
|
||||
if (opts.swaggerOptions.showOperationIds) {
|
||||
this.model.showOperationIds = true;
|
||||
}
|
||||
}
|
||||
return this;
|
||||
},
|
||||
@@ -83,7 +87,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
},
|
||||
|
||||
// Note: copied from CoffeeScript compiled file
|
||||
// TODO: redactor
|
||||
// TODO: refactor
|
||||
render: function() {
|
||||
var a, auth, auths, code, contentTypeModel, isMethodSubmissionSupported, k, key, l, len, len1, len2, len3, len4, m, modelAuths, n, o, p, param, q, ref, ref1, ref2, ref3, ref4, ref5, responseContentTypeView, responseSignatureView, schema, schemaObj, scopeIndex, signatureModel, statusCode, successResponse, type, v, value, produces, isXML, isJSON;
|
||||
isMethodSubmissionSupported = jQuery.inArray(this.model.method, this.model.supportedSubmitMethods()) >= 0;
|
||||
@@ -258,9 +262,9 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
}
|
||||
|
||||
if (Array.isArray(this.model.security)) {
|
||||
var authsModel = SwaggerUi.utils.parseSecurityDefinitions(this.model.security);
|
||||
var authsModel = SwaggerUi.utils.parseSecurityDefinitions(this.model.security, this.model.parent.securityDefinitions);
|
||||
|
||||
authsModel.isLogout = !_.isEmpty(window.swaggerUi.api.clientAuthorizations.authz);
|
||||
authsModel.isLogout = !_.isEmpty(this.model.clientAuthorizations.authz);
|
||||
this.authView = new SwaggerUi.Views.AuthButtonView({
|
||||
data: authsModel,
|
||||
router: this.router,
|
||||
@@ -660,7 +664,9 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
url = response.request.url;
|
||||
}
|
||||
var headers = response.headers;
|
||||
content = jQuery.trim(content);
|
||||
if(typeof content === 'string') {
|
||||
content = jQuery.trim(content);
|
||||
}
|
||||
|
||||
// if server is nice, and sends content-type back, we can use it
|
||||
var contentType = null;
|
||||
@@ -670,6 +676,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
contentType = contentType.split(';')[0].trim();
|
||||
}
|
||||
}
|
||||
|
||||
$('.response_body', $(this.el)).removeClass('json');
|
||||
$('.response_body', $(this.el)).removeClass('xml');
|
||||
|
||||
@@ -680,11 +687,54 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
|
||||
var pre;
|
||||
var code;
|
||||
var skipHighlight = false;
|
||||
if (!content) {
|
||||
code = $('<code />').text('no content');
|
||||
pre = $('<pre class="json" />').append(code);
|
||||
|
||||
// JSON
|
||||
} else if (
|
||||
contentType === 'application/octet-stream' ||
|
||||
headers['Content-Disposition'] && (/attachment/).test(headers['Content-Disposition']) ||
|
||||
headers['content-disposition'] && (/attachment/).test(headers['content-disposition']) ||
|
||||
headers['Content-Description'] && (/File Transfer/).test(headers['Content-Description']) ||
|
||||
headers['content-description'] && (/File Transfer/).test(headers['content-description'])) {
|
||||
|
||||
if ('Blob' in window) {
|
||||
var type = contentType || 'text/html';
|
||||
var a = document.createElement('a');
|
||||
var href;
|
||||
|
||||
if({}.toString.apply(content) === '[object Blob]') {
|
||||
href = window.URL.createObjectURL(content);
|
||||
}
|
||||
else {
|
||||
var binaryData = [];
|
||||
binaryData.push(content);
|
||||
href = window.URL.createObjectURL(new Blob(binaryData, {type: type}));
|
||||
}
|
||||
var fileName = response.url.substr(response.url.lastIndexOf('/') + 1);
|
||||
var download = [type, fileName, href].join(':');
|
||||
|
||||
// Use filename from response header
|
||||
var disposition = headers['content-disposition'] || headers['Content-Disposition'];
|
||||
if(typeof disposition !== 'undefined') {
|
||||
var responseFilename = /filename=([^;]*);?/.exec(disposition);
|
||||
if(responseFilename !== null && responseFilename.length > 1) {
|
||||
download = responseFilename[1];
|
||||
fileName = download;
|
||||
}
|
||||
}
|
||||
|
||||
a.setAttribute('href', href);
|
||||
a.setAttribute('download', download);
|
||||
a.innerText = 'Download ' + fileName;
|
||||
|
||||
pre = $('<div/>').append(a);
|
||||
skipHighlight = true;
|
||||
} else {
|
||||
pre = $('<pre class="json" />').append('Download headers detected but your browser does not support downloading binary via XHR (Blob).');
|
||||
}
|
||||
} else if (contentType === 'application/json' || /\+json$/.test(contentType)) {
|
||||
var json = null;
|
||||
try {
|
||||
@@ -710,49 +760,17 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
code = $('<code />').text(content);
|
||||
pre = $('<pre class="plain" />').append(code);
|
||||
|
||||
|
||||
// Image
|
||||
} else if (/^image\//.test(contentType)) {
|
||||
pre = $('<img>').attr('src', url);
|
||||
var urlCreator = window.URL || window.webkitURL;
|
||||
var imageUrl = urlCreator.createObjectURL(content);
|
||||
|
||||
pre = $('<img>').attr( 'src', imageUrl);
|
||||
// Audio
|
||||
} else if (/^audio\//.test(contentType) && supportsAudioPlayback(contentType)) {
|
||||
pre = $('<audio controls>').append($('<source>').attr('src', url).attr('type', contentType));
|
||||
|
||||
// Download
|
||||
} else if (headers['Content-Disposition'] && (/attachment/).test(headers['Content-Disposition']) ||
|
||||
headers['content-disposition'] && (/attachment/).test(headers['content-disposition']) ||
|
||||
headers['Content-Description'] && (/File Transfer/).test(headers['Content-Description']) ||
|
||||
headers['content-description'] && (/File Transfer/).test(headers['content-description'])) {
|
||||
|
||||
if ('Blob' in window) {
|
||||
var type = contentType || 'text/html';
|
||||
var blob = new Blob([content], {type: type});
|
||||
var a = document.createElement('a');
|
||||
var href = window.URL.createObjectURL(blob);
|
||||
var fileName = response.url.substr(response.url.lastIndexOf('/') + 1);
|
||||
var download = [type, fileName, href].join(':');
|
||||
|
||||
// Use filename from response header
|
||||
var disposition = headers['content-disposition'] || headers['Content-Disposition'];
|
||||
if(typeof disposition !== 'undefined') {
|
||||
var responseFilename = /filename=([^;]*);?/.exec(disposition);
|
||||
if(responseFilename !== null && responseFilename.length > 1) {
|
||||
download = responseFilename[1];
|
||||
}
|
||||
}
|
||||
|
||||
a.setAttribute('href', href);
|
||||
a.setAttribute('download', download);
|
||||
a.innerText = 'Download ' + fileName;
|
||||
|
||||
pre = $('<div/>').append(a);
|
||||
} else {
|
||||
pre = $('<pre class="json" />').append('Download headers detected but your browser does not support downloading binary via XHR (Blob).');
|
||||
}
|
||||
|
||||
// Location header based redirect download
|
||||
} else if(headers.location || headers.Location) {
|
||||
// Location header based redirect download
|
||||
window.location = response.url;
|
||||
|
||||
// Anything else (CORS)
|
||||
@@ -787,9 +805,14 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
|
||||
$('.request_headers', $(this.el)).html('<pre>' + _.escape(JSON.stringify(requestHeaders, null, ' ')).replace(/\n/g, '<br>') + '</pre>');
|
||||
}
|
||||
|
||||
// Call user-defined hook
|
||||
if (opts.responseHooks && opts.responseHooks[this.nickname]) {
|
||||
opts.responseHooks[this.nickname](response, this);
|
||||
}
|
||||
|
||||
var response_body_el = $('.response_body', $(this.el))[0];
|
||||
// only highlight the response if response is less than threshold, default state is highlight response
|
||||
if (opts.highlightSizeThreshold && typeof response.data !== 'undefined' && response.data.length > opts.highlightSizeThreshold) {
|
||||
if (opts.highlightSizeThreshold && typeof response.data !== 'undefined' && response.data.length > opts.highlightSizeThreshold || skipHighlight) {
|
||||
return response_body_el;
|
||||
} else {
|
||||
return hljs.highlightBlock(response_body_el);
|
||||
|
||||
@@ -24,7 +24,6 @@ SwaggerUi.Views.ParameterView = Backbone.View.extend({
|
||||
var consumes = this.model.consumes || [];
|
||||
var sampleJSON, signatureView;
|
||||
|
||||
|
||||
if (typeof type === 'undefined') {
|
||||
if (schema.$ref) {
|
||||
var ref = schema.$ref;
|
||||
|
||||
@@ -553,14 +553,30 @@ SwaggerUi.partials.signature = (function () {
|
||||
modelsToIgnore[value.name] = value;
|
||||
|
||||
// Response support
|
||||
if (value.examples && _.isPlainObject(value.examples) && value.examples['application/json']) {
|
||||
value.definition.example = value.examples['application/json'];
|
||||
if (value.examples && _.isPlainObject(value.examples)) {
|
||||
value = _.cloneDeep(value);
|
||||
var keys = Object.keys(value.examples);
|
||||
|
||||
if (_.isString(value.definition.example)) {
|
||||
value.definition.example = jsyaml.safeLoad(value.definition.example);
|
||||
_.forEach(keys, function(key) {
|
||||
if(key.indexOf('application/json') === 0) {
|
||||
var example = value.examples[key];
|
||||
if (_.isString(example)) {
|
||||
example = jsyaml.safeLoad(example);
|
||||
}
|
||||
value.definition.example = example;
|
||||
return schemaToJSON(value.definition, example, modelsToIgnore, value.modelPropertyMacro);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (value.examples) {
|
||||
value = _.cloneDeep(value);
|
||||
var example = value.examples;
|
||||
if (_.isString(example)) {
|
||||
example = jsyaml.safeLoad(example);
|
||||
}
|
||||
} else if (!value.definition.example) {
|
||||
value.definition.example = value.examples;
|
||||
value.definition.example = example;
|
||||
return schemaToJSON(value.definition, example, modelsToIgnore, value.modelPropertyMacro);
|
||||
}
|
||||
|
||||
return schemaToJSON(value.definition, value.models, modelsToIgnore, value.modelPropertyMacro);
|
||||
@@ -673,7 +689,8 @@ SwaggerUi.partials.signature = (function () {
|
||||
return str.join('');
|
||||
};
|
||||
|
||||
var getName = function (name, xml) {
|
||||
// Commenting this funtion as the names are now determined beforehand and the prefix part is exposed as a separate function | https://github.com/swagger-api/swagger-ui/issues/2577
|
||||
/** var getName = function (name, xml) {
|
||||
var result = name || '';
|
||||
|
||||
xml = xml || {};
|
||||
@@ -688,6 +705,19 @@ SwaggerUi.partials.signature = (function () {
|
||||
|
||||
return result;
|
||||
};
|
||||
*/
|
||||
|
||||
var getPrefix = function (name, xml) {
|
||||
var result = name || '';
|
||||
|
||||
xml = xml || {};
|
||||
|
||||
if (xml.prefix) {
|
||||
result = xml.prefix + ':' + result;
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
var getNamespace = function (xml) {
|
||||
var namespace = '';
|
||||
@@ -723,9 +753,12 @@ SwaggerUi.partials.signature = (function () {
|
||||
var attributes = [];
|
||||
|
||||
if (!items) { return getErrorMessage(); }
|
||||
|
||||
value = createSchemaXML(name, items, models, config);
|
||||
|
||||
var key = name;
|
||||
// If there is a name specified for the array elements, use that for the array elements name | https://github.com/swagger-api/swagger-ui/issues/2577
|
||||
if(items.xml && items.xml.name) {
|
||||
key = items.xml.name;
|
||||
}
|
||||
value = createSchemaXML(key, items, models, config);
|
||||
if (namespace) {
|
||||
attributes.push(namespace);
|
||||
}
|
||||
@@ -811,7 +844,7 @@ SwaggerUi.partials.signature = (function () {
|
||||
|
||||
if (namespace) {
|
||||
attrs.push(namespace);
|
||||
}
|
||||
}
|
||||
|
||||
if (!properties && !additionalProperties) { return getErrorMessage(); }
|
||||
|
||||
@@ -856,9 +889,10 @@ SwaggerUi.partials.signature = (function () {
|
||||
var output, index;
|
||||
config = config || {};
|
||||
config.modelsToIgnore = config.modelsToIgnore || [];
|
||||
|
||||
var descriptor = _.isString($ref) ? getDescriptorByRef($ref, name, models, config)
|
||||
: getDescriptor(name, definition, models, config);
|
||||
|
||||
|
||||
if (!descriptor) {
|
||||
return getErrorMessage();
|
||||
}
|
||||
@@ -888,10 +922,10 @@ SwaggerUi.partials.signature = (function () {
|
||||
if (arguments.length < 4) {
|
||||
throw new Error();
|
||||
}
|
||||
|
||||
this.config = config || {};
|
||||
this.config.modelsToIgnore = this.config.modelsToIgnore || [];
|
||||
this.name = getName(name, definition.xml);
|
||||
// name is already set by getDescriptorByRef or getDescriptor function depending on the type. Only prefix, if present is needed to be set here | https://github.com/swagger-api/swagger-ui/issues/2577
|
||||
this.name = getPrefix(name, definition.xml);
|
||||
this.definition = definition;
|
||||
this.models = models;
|
||||
this.type = type;
|
||||
@@ -901,8 +935,15 @@ SwaggerUi.partials.signature = (function () {
|
||||
var modelType = simpleRef($ref);
|
||||
var model = models[modelType] || {};
|
||||
var type = model.definition && model.definition.type ? model.definition.type : 'object';
|
||||
name = name || model.name;
|
||||
|
||||
// If model definition xml name is present, then that will be preferred over model name. This is the case of preferring XmlElement name over XmlRootElement name if XmlElement name is provided | https://github.com/swagger-api/swagger-ui/issues/2577
|
||||
if(model.definition && model.definition.xml && model.definition.xml.name) {
|
||||
name = name || model.definition.xml.name || model.name;
|
||||
}
|
||||
// else only model name will be considered for determination | https://github.com/swagger-api/swagger-ui/issues/2577
|
||||
else {
|
||||
name = name || model.name;
|
||||
}
|
||||
|
||||
if (config.modelsToIgnore.indexOf($ref) > -1) {
|
||||
type = 'loop';
|
||||
config.loopTo = modelType;
|
||||
@@ -913,13 +954,15 @@ SwaggerUi.partials.signature = (function () {
|
||||
if (!model.definition) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Descriptor(name, type, model.definition, models, config);
|
||||
return new Descriptor(name, type, model.definition, models, config);
|
||||
}
|
||||
|
||||
function getDescriptor (name, definition, models, config){
|
||||
var type = definition.type || 'object';
|
||||
|
||||
// If definition xml name is present, then that will be preferred over name | https://github.com/swagger-api/swagger-ui/issues/2577
|
||||
if(definition.xml && definition.xml.name) {
|
||||
name = definition.xml.name || name;
|
||||
}
|
||||
if (!definition) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -201,4 +201,9 @@
|
||||
}
|
||||
|
||||
.api-popup-actions { padding-top: 10px; }
|
||||
|
||||
fieldset {
|
||||
padding-bottom: 10px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +250,8 @@
|
||||
font-size: .85em;
|
||||
line-height: 1.2em;
|
||||
overflow: auto;
|
||||
max-height: 200px;
|
||||
height: 200px;
|
||||
resize: vertical;
|
||||
cursor: pointer;
|
||||
}
|
||||
ul.signature-nav {
|
||||
@@ -708,6 +709,11 @@
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
}
|
||||
.nickname {
|
||||
color: #aaaaaa;
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: transparent url(../images/logo.png) no-repeat left center;
|
||||
padding: 20px 0 20px 40px;
|
||||
}
|
||||
|
||||
@@ -84,7 +83,6 @@
|
||||
width: 1500px;
|
||||
margin: auto;
|
||||
margin-top: 0;
|
||||
background-image: url('../images/shield.png');
|
||||
background-repeat: no-repeat;
|
||||
background-position: -40px -20px;
|
||||
margin-bottom: 210px;
|
||||
|
||||
@@ -1,12 +1,36 @@
|
||||
<div>
|
||||
<h3 class="auth__title">Select OAuth2.0 Scopes</h3>
|
||||
<h3 class="auth__title">OAuth2.0</h3>
|
||||
<p>{{{sanitize description}}}</p>
|
||||
{{#if authorizationUrl}}<p>Authorization URL: {{{sanitize authorizationUrl}}}</p>{{/if}}
|
||||
{{#if tokenUrl}}<p>Token URL: {{{sanitize tokenUrl}}}</p>{{/if}}
|
||||
<p>flow: {{{escape flow}}}</p>
|
||||
{{#if isPasswordFlow}}
|
||||
<p>Please input username and password for password flow authorization</p>
|
||||
<fieldset>
|
||||
<div><label>Username: <input class="oauth-username" type="text" name="username"></label></div>
|
||||
<div><label>Password: <input class="oauth-password" type="password" name="password"></label></div>
|
||||
</fieldset>
|
||||
{{/if}}
|
||||
{{#if clientAuthentication}}
|
||||
<p>Setup client authentication.{{#if requireClientAuthenticaiton}}(Required){{/if}}</p>
|
||||
<fieldset>
|
||||
<div><label>Type:
|
||||
<select class="oauth-client-authentication-type" name="client-authentication-type">
|
||||
<option value="none" selected>None or other</option>
|
||||
<option value="basic">Basic auth</option>
|
||||
<option value="request-body">Request body</option>
|
||||
</select>
|
||||
</label></div>
|
||||
<div class="oauth-client-authentication" hidden>
|
||||
<div><label>ClientId: <input class="oauth-client-id" type="text" name="client-id"></label></div>
|
||||
<div><label>Secret: <input class="oauth-client-secret" type="text" name="client-secret"></label></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{/if}}
|
||||
<p><strong> {{{escape appName}}} </strong> API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>
|
||||
<p>Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.
|
||||
<a href="#">Learn how to use</a>
|
||||
</p>
|
||||
<p><strong> {{{escape appName}}} </strong> API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>
|
||||
<p>Authorization URL: {{{sanitize authorizationUrl}}}</p>
|
||||
<p>flow: {{{escape flow}}}</p>
|
||||
<ul class="api-popup-scopes">
|
||||
{{#each scopes}}
|
||||
<li>
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
</span>
|
||||
</h3>
|
||||
<ul class='options'>
|
||||
{{#if showOperationIds}}
|
||||
<li>
|
||||
<a href='#!/{{sanitize encodedParentId}}/{{sanitize nickname}}' class="toggleOperation"><span class="nickname">{{{escape nickname}}}()</span></a>
|
||||
</li>
|
||||
{{/if}}
|
||||
<li>
|
||||
<a href='#!/{{sanitize encodedParentId}}/{{sanitize nickname}}' class="toggleOperation"><span class="markdown">{{{escape summary}}}</span></a>
|
||||
</li>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{#if isFile}}
|
||||
<input class='parameter' class='required' type='file' name='{{{sanitize name}}}' id='{{{escape valueId}}}'/>
|
||||
<input class='parameter required' type='file' name='{{{sanitize name}}}' id='{{{escape valueId}}}'/>
|
||||
{{else}}
|
||||
{{#renderTextParam this}}
|
||||
{{/renderTextParam}}
|
||||
|
||||
@@ -212,6 +212,28 @@ templates['main'] = template({"1":function(container,depth0,helpers,partials,dat
|
||||
+ " </h4>\n </div>\n</div>\n";
|
||||
},"useData":true});
|
||||
templates['oauth2'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
|
||||
return "<p>Authorization URL: "
|
||||
+ ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.authorizationUrl : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ "</p>";
|
||||
},"3":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
|
||||
return "<p>Token URL: "
|
||||
+ ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.tokenUrl : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ "</p>";
|
||||
},"5":function(container,depth0,helpers,partials,data) {
|
||||
return " <p>Please input username and password for password flow authorization</p>\n <fieldset>\n <div><label>Username: <input class=\"oauth-username\" type=\"text\" name=\"username\"></label></div>\n <div><label>Password: <input class=\"oauth-password\" type=\"password\" name=\"password\"></label></div>\n </fieldset>\n";
|
||||
},"7":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
|
||||
return " <p>Setup client authentication."
|
||||
+ ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.requireClientAuthenticaiton : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ "</p>\n <fieldset>\n <div><label>Type:\n <select class=\"oauth-client-authentication-type\" name=\"client-authentication-type\">\n <option value=\"none\" selected>None or other</option>\n <option value=\"basic\">Basic auth</option>\n <option value=\"request-body\">Request body</option>\n </select>\n </label></div>\n <div class=\"oauth-client-authentication\" hidden>\n <div><label>ClientId: <input class=\"oauth-client-id\" type=\"text\" name=\"client-id\"></label></div>\n <div><label>Secret: <input class=\"oauth-client-secret\" type=\"text\" name=\"client-secret\"></label></div>\n </div>\n </fieldset>\n";
|
||||
},"8":function(container,depth0,helpers,partials,data) {
|
||||
return "(Required)";
|
||||
},"10":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing;
|
||||
|
||||
return " <li>\n <input class=\"oauth-scope\" type=\"checkbox\" data-scope=\""
|
||||
@@ -223,9 +245,9 @@ templates['oauth2'] = template({"1":function(container,depth0,helpers,partials,d
|
||||
+ "</label><br/>\n <span class=\"api-scope-desc\">"
|
||||
+ ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ "\n"
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.OAuthSchemeKey : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.OAuthSchemeKey : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ " </span>\n </li>\n";
|
||||
},"2":function(container,depth0,helpers,partials,data) {
|
||||
},"11":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
|
||||
return " ("
|
||||
@@ -234,16 +256,21 @@ templates['oauth2'] = template({"1":function(container,depth0,helpers,partials,d
|
||||
},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing;
|
||||
|
||||
return "<div>\n <h3 class=\"auth__title\">Select OAuth2.0 Scopes</h3>\n <p>"
|
||||
return "<div>\n <h3 class=\"auth__title\">OAuth2.0</h3>\n <p>"
|
||||
+ ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ "</p>\n <p>Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\n <a href=\"#\">Learn how to use</a>\n </p>\n <p><strong> "
|
||||
+ ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.appName : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ " </strong> API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>\n <p>Authorization URL: "
|
||||
+ ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.authorizationUrl : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ "</p>\n <p>flow: "
|
||||
+ "</p>\n "
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.authorizationUrl : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ "\n "
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tokenUrl : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ "\n <p>flow: "
|
||||
+ ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.flow : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ "</p>\n <ul class=\"api-popup-scopes\">\n"
|
||||
+ ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.scopes : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ "</p>\n"
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isPasswordFlow : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.clientAuthentication : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ " <p><strong> "
|
||||
+ ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.appName : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ " </strong> API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>\n <p>Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\n <a href=\"#\">Learn how to use</a>\n </p>\n <ul class=\"api-popup-scopes\">\n"
|
||||
+ ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.scopes : depth0),{"name":"each","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||
+ " </ul>\n</div>";
|
||||
},"useData":true});
|
||||
templates['operation'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
@@ -585,7 +612,7 @@ templates['param_required'] = template({"1":function(container,depth0,helpers,pa
|
||||
},"10":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing;
|
||||
|
||||
return " <input class='parameter' class='required' type='file' name='"
|
||||
return " <input class='parameter required' type='file' name='"
|
||||
+ ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.name : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "")
|
||||
+ "' id='"
|
||||
+ ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.valueId : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
|
||||
|
||||
Reference in New Issue
Block a user