Commit 67b43f5f by Tuomas Riihimäki

Update swagger version from 1.5 to 2.0

swagger now supports openapi v3 specification
1 parent c3cf8a7b
Showing with 384 additions and 977 deletions
......@@ -137,29 +137,19 @@
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger.version}</version>
<version>${swaggerv3.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jersey2-jaxrs</artifactId>
<version>${swagger.version}</version>
<exclusions>
<exclusion>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
</exclusion>
</exclusions>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2</artifactId>
<version>${swaggerv3.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-servlet</artifactId>
<version>${swagger.version}</version>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
<version>${swaggerv3.version}</version>
</dependency>
<dependency>
<groupId>fish.payara.extras</groupId>
......
......@@ -46,9 +46,9 @@
</build>
<dependencies>
<dependency>
<groupId>io.swagger</groupId>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger.version}</version>
<version>${swaggerv3.version}</version>
</dependency>
</dependencies>
......
package fi.codecrew.moya.rest.pojo.appconfig.v1;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
......@@ -11,7 +11,7 @@ import java.util.List;
/**
* Created by tuukka on 28.3.2015.
*/
@ApiModel
public class EventPojo {
private Integer lanEventId;
......
......@@ -18,14 +18,13 @@
*/
package fi.codecrew.moya.rest.pojo.map.v1;
import io.swagger.annotations.ApiModel;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@ApiModel("Map")
@XmlRootElement()
public class MapRoot {
private List<MapPojo> maps;
......
......@@ -18,14 +18,15 @@
*/
package fi.codecrew.moya.rest.pojo.map.v1;
import io.swagger.annotations.ApiModel;
import java.util.Calendar;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@ApiModel
@XmlRootElement
public class PlacePojo {
private Integer id;
......
......@@ -18,14 +18,14 @@
*/
package fi.codecrew.moya.rest.pojo.map.v1;
import io.swagger.annotations.ApiModel;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@ApiModel
public class PlaceRoot {
public PlaceRoot() {
......
......@@ -19,11 +19,11 @@
package fi.codecrew.moya.rest.pojo.network.v1;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
@ApiModel
public class NetworkAssociationInfoPojo {
private String createTime;
private String modifyTime;
......
......@@ -19,12 +19,12 @@
package fi.codecrew.moya.rest.pojo.network.v1;
import io.swagger.annotations.ApiModel;
import java.util.ArrayList;
import java.util.List;
@ApiModel
public class NetworkAssociationResponseRoot {
private RESTCallResultPojo result;
private List<NetworkAssociationActionPojo> additions;
......
......@@ -18,12 +18,12 @@
*/
package fi.codecrew.moya.rest.pojo.network.v1;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
@ApiModel
public class RESTCallResultPojo {
private Integer resultCode;
private String resultMessage;
......
......@@ -24,10 +24,9 @@ import javax.xml.bind.annotation.XmlElement;
import fi.codecrew.moya.rest.pojo.userinfo.v1.EventUserRestPojo;
import fi.codecrew.moya.rest.pojo.userinfo.v1.PrintedCardRestPojo;
import io.swagger.annotations.ApiModel;
@ApiModel
public class ReaderEventRestPojo {
private EventUserRestPojo eventUser;
......
......@@ -18,12 +18,9 @@
*/
package fi.codecrew.moya.rest.pojo.reader.v1;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
@ApiModel
public class ReaderRestPojo {
private Integer readerId;
......@@ -46,7 +43,7 @@ public class ReaderRestPojo {
}
@XmlElement(name = "description")
public String getdescription() {
public String getDescription() {
return description;
}
......@@ -67,10 +64,6 @@ public class ReaderRestPojo {
this.readerId = readerId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
......
......@@ -21,13 +21,13 @@ package fi.codecrew.moya.rest.pojo.reader.v3;
import fi.codecrew.moya.rest.pojo.userinfo.v1.EventUserRestPojo;
import fi.codecrew.moya.rest.pojo.userinfo.v1.PrintedCardRestPojo;
import fi.codecrew.moya.rest.pojo.userinfo.v3.PrintedCardRestPojoV3;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
import java.util.Date;
@ApiModel
public class ReaderEventRestPojoV3 {
private EventUserRestPojo eventUser;
......
......@@ -3,9 +3,9 @@ package fi.codecrew.moya.rest.pojo.userinfo.v1;
import java.io.Serializable;
import java.util.Date;
import io.swagger.annotations.ApiModel;
@ApiModel
public class ApiApplicationInstancePojo implements Serializable {
private static final long serialVersionUID = 1L;
......
......@@ -18,14 +18,8 @@
*/
package fi.codecrew.moya.rest.pojo.userinfo.v1;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.xml.bind.annotation.XmlElement;
@ApiModel("EventUser")
@Api("Event user")
public class EventUserRestPojo {
private String nick = "";
......@@ -39,39 +33,39 @@ public class EventUserRestPojo {
}
@XmlElement()
@ApiModelProperty("Nickname")
public String getNick() {
return nick;
}
@XmlElement()
@ApiModelProperty("Login name")
public String getLogin()
{
return login;
}
@XmlElement()
@ApiModelProperty("EventUser entity ID")
public Integer getEventuserId()
{
return eventuserId;
}
@XmlElement()
@ApiModelProperty("User entity ID")
public Integer getUserId() {
return userId;
}
@XmlElement()
@ApiModelProperty("First name")
public String getFirstname() {
return firstname;
}
@XmlElement()
@ApiModelProperty("Last name")
public String getLastname() {
return lastname;
}
......
......@@ -18,13 +18,12 @@
*/
package fi.codecrew.moya.rest.pojo.userinfo.v1;
import io.swagger.annotations.ApiModel;
import java.util.Date;
import javax.xml.bind.annotation.XmlElement;
@ApiModel
public class PrintedCardRestPojo {
private Integer eventuserId;
......
......@@ -18,7 +18,7 @@
*/
package fi.codecrew.moya.rest.pojo.userinfo.v1;
import io.swagger.annotations.ApiModel;
import java.util.ArrayList;
import java.util.List;
......@@ -26,7 +26,7 @@ import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement()
@ApiModel
public class SimpleEventuserRoot {
private List<EventUserRestPojo> eventusers;
......
......@@ -18,12 +18,12 @@
*/
package fi.codecrew.moya.rest.pojo.userinfo.v1;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
@ApiModel
public class UserPermissionRestPojo {
@XmlElement()
private EventUserRestPojo user;
......
......@@ -18,11 +18,11 @@
*/
package fi.codecrew.moya.rest.pojo.userinfo.v3;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
@ApiModel
public class CardCodePojoV3 {
private String readerType;
......
......@@ -18,13 +18,13 @@
*/
package fi.codecrew.moya.rest.pojo.userinfo.v3;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlElement;
import java.util.Date;
import java.util.List;
@ApiModel
public class PrintedCardRestPojoV3 {
private Integer eventuserId;
......
package fi.codecrew.moya.rest.pojo.util.v1;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@ApiModel
public class ErrorRoot {
private String error;
......
package fi.codecrew.moya.rest.pojo.vip.v2;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
......@@ -9,7 +8,6 @@ import java.util.List;
@XmlRootElement()
@ApiModel(description = "vip")
public class VipRestPojo {
public Integer id;
......
/* 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;
}
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html>
<head>
<title>Swagger UI</title>
<link href='//fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'/>
<link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
<link href='css/screen.css' media='print' rel='stylesheet' type='text/css'/>
<script type="text/javascript" src="lib/shred.bundle.js"></script>
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
<script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
<script src='lib/handlebars-1.0.0.js' type='text/javascript'></script>
<script src='lib/underscore-min.js' type='text/javascript'></script>
<script src='lib/backbone-min.js' type='text/javascript'></script>
<script src='lib/swagger.js' type='text/javascript'></script>
<script src='lib/swagger-client.js' type='text/javascript'></script>
<script src='swagger-ui.js' type='text/javascript'></script>
<script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
<!-- enabling this will enable oauth2 implicit scope support -->
<script src='lib/swagger-oauth.js' type='text/javascript'></script>
<script type="text/javascript">
$(function () {
var url = window.location.protocol + '//' + window.location.host + '/MoyaWeb/rest/api-docs';
if (!url || url.length < 1) {
url = "http://localhost:8080/MoyaWeb/rest/api-docs";
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
<style>
html
{
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
window.swaggerUi = new SwaggerUi({
url: url,
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
onComplete: function(swaggerApi, swaggerUi){
log("Loaded SwaggerUI");
if(typeof initOAuth == "function") {
/*
initOAuth({
clientId: "your-client-id",
realm: "your-realms",
appName: "your-app-name"
});
*/
}
$('pre code').each(function(i, e) {
hljs.highlightBlock(e)
});
},
onFailure: function(data) {
log("Unable to Load SwaggerUI");
},
docExpansion: "none",
sorter : "alpha"
});
function addApiKeyAuthorization() {
var key = $('#input_apiKey')[0].value;
log("key: " + key);
if(key && key.trim() != "") {
log("added key " + key);
window.authorizations.add("api_key", new ApiKeyAuthorization("api_key", key, "query"));
}
*,
*:before,
*:after
{
box-sizing: inherit;
}
$('#input_apiKey').change(function() {
addApiKeyAuthorization();
});
body
{
margin:0;
background: #fafafa;
}
</style>
</head>
// if you have an apiKey you would like to pre-populate on the page for demonstration purposes...
/*
var apiKey = "myApiKeyXXXX123456789";
$('#input_apiKey').val(apiKey);
addApiKeyAuthorization();
*/
<body>
<div id="swagger-ui"></div>
window.swaggerUi.load();
});
</script>
</head>
<script src="./swagger-ui-bundle.js"> </script>
<script src="./swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {
<body class="swagger-section">
<div id='header'>
<div class="swagger-ui-wrap">
<a id="logo" href="http://swagger.io">swagger</a>
<form id='api_selector'>
<div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
<div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
<div class='input'><a id="explore" href="#">Explore</a></div>
</form>
</div>
</div>
// Build a system
const ui = SwaggerUIBundle({
url: "../rest/openapi.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})
<div id="message-bar" class="swagger-ui-wrap">&nbsp;</div>
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
</body>
window.ui = ui
}
</script>
</body>
</html>
var hljs=new function(){function l(o){return o.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o<p.length;o++){if(e[p[o]]||p[o]=="no-highlight"){return p[o]}}}function c(q){var o=[];(function p(r,s){for(var t=r.firstChild;t;t=t.nextSibling){if(t.nodeType==3){s+=t.nodeValue.length}else{if(t.nodeName=="BR"){s+=1}else{if(t.nodeType==1){o.push({event:"start",offset:s,node:t});s=p(t,s);o.push({event:"stop",offset:s,node:t})}}}}return s})(q,0);return o}function j(x,v,w){var p=0;var y="";var r=[];function t(){if(x.length&&v.length){if(x[0].offset!=v[0].offset){return(x[0].offset<v[0].offset)?x:v}else{return v[0].event=="start"?x:v}}else{return x.length?x:v}}function s(A){function z(B){return" "+B.nodeName+'="'+l(B.value)+'"'}return"<"+A.nodeName+Array.prototype.map.call(A.attributes,z).join("")+">"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("</"+o.nodeName.toLowerCase()+">")}while(o!=u.node);r.splice(q,1);while(q<r.length){y+=s(r[q]);q++}}}}return y+l(w.substr(p))}function f(q){function o(s,r){return RegExp(s,"m"+(q.cI?"i":"")+(r?"g":""))}function p(y,w){if(y.compiled){return}y.compiled=true;var s=[];if(y.k){var r={};function z(A,t){t.split(" ").forEach(function(B){var C=B.split("|");r[C[0]]=[A,C[1]?Number(C[1]):1];s.push(C[0])})}y.lR=o(y.l||hljs.IR,true);if(typeof y.k=="string"){z("keyword",y.k)}else{for(var x in y.k){if(!y.k.hasOwnProperty(x)){continue}z(x,y.k[x])}}y.k=r}if(w){if(y.bWK){y.b="\\b("+s.join("|")+")\\s"}y.bR=o(y.b?y.b:"\\B|\\b");if(!y.e&&!y.eW){y.e="\\B|\\b"}if(y.e){y.eR=o(y.e)}y.tE=y.e||"";if(y.eW&&w.tE){y.tE+=(y.e?"|":"")+w.tE}}if(y.i){y.iR=o(y.i)}if(y.r===undefined){y.r=1}if(!y.c){y.c=[]}for(var v=0;v<y.c.length;v++){if(y.c[v]=="self"){y.c[v]=y}p(y.c[v],y)}if(y.starts){p(y.starts,w)}var u=[];for(var v=0;v<y.c.length;v++){u.push(y.c[v].b)}if(y.tE){u.push(y.tE)}if(y.i){u.push(y.i)}y.t=u.length?o(u.join("|"),true):{exec:function(t){return null}}}p(q)}function d(D,E){function o(r,M){for(var L=0;L<M.c.length;L++){var K=M.c[L].bR.exec(r);if(K&&K.index==0){return M.c[L]}}}function s(K,r){if(K.e&&K.eR.test(r)){return K}if(K.eW){return s(K.parent,r)}}function t(r,K){return K.i&&K.iR.test(r)}function y(L,r){var K=F.cI?r[0].toLowerCase():r[0];return L.k.hasOwnProperty(K)&&L.k[K]}function G(){var K=l(w);if(!A.k){return K}var r="";var N=0;A.lR.lastIndex=0;var L=A.lR.exec(K);while(L){r+=K.substr(N,L.index-N);var M=y(A,L);if(M){v+=M[1];r+='<span class="'+M[0]+'">'+L[0]+"</span>"}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return'<span class="'+r.language+'">'+r.value+"</span>"}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'<span class="'+L.cN+'">':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+="</span>"}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"<br>")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs);
\ No newline at end of file
/*
* 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);
\ No newline at end of file
(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);
/*
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();}});}});};
\ No newline at end of file
// The purpose of the `Content` object is to abstract away the data conversions
// to and from raw content entities as strings. For example, you want to be able
// to pass in a Javascript object and have it be automatically converted into a
// JSON string if the `content-type` is set to a JSON-based media type.
// Conversely, you want to be able to transparently get back a Javascript object
// in the response if the `content-type` is a JSON-based media-type.
// One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).
// The `Content` constructor takes an options object, which *must* have either a
// `body` or `data` property and *may* have a `type` property indicating the
// media type. If there is no `type` attribute, a default will be inferred.
var Content = function(options) {
this.body = options.body;
this.data = options.data;
this.type = options.type;
};
Content.prototype = {
// Treat `toString()` as asking for the `content.body`. That is, the raw content entity.
//
// toString: function() { return this.body; }
//
// Commented out, but I've forgotten why. :/
};
// `Content` objects have the following attributes:
Object.defineProperties(Content.prototype,{
// - **type**. Typically accessed as `content.type`, reflects the `content-type`
// header associated with the request or response. If not passed as an options
// to the constructor or set explicitly, it will infer the type the `data`
// attribute, if possible, and, failing that, will default to `text/plain`.
type: {
get: function() {
if (this._type) {
return this._type;
} else {
if (this._data) {
switch(typeof this._data) {
case "string": return "text/plain";
case "object": return "application/json";
}
}
}
return "text/plain";
},
set: function(value) {
this._type = value;
return this;
},
enumerable: true
},
// - **data**. Typically accessed as `content.data`, reflects the content entity
// converted into Javascript data. This can be a string, if the `type` is, say,
// `text/plain`, but can also be a Javascript object. The conversion applied is
// based on the `processor` attribute. The `data` attribute can also be set
// directly, in which case the conversion will be done the other way, to infer
// the `body` attribute.
data: {
get: function() {
if (this._body) {
return this.processor.parser(this._body);
} else {
return this._data;
}
},
set: function(data) {
if (this._body&&data) Errors.setDataWithBody(this);
this._data = data;
return this;
},
enumerable: true
},
// - **body**. Typically accessed as `content.body`, reflects the content entity
// as a UTF-8 string. It is the mirror of the `data` attribute. If you set the
// `data` attribute, the `body` attribute will be inferred and vice-versa. If
// you attempt to set both, an exception is raised.
body: {
get: function() {
if (this._data) {
return this.processor.stringify(this._data);
} else {
return this._body.toString();
}
},
set: function(body) {
if (this._data&&body) Errors.setBodyWithData(this);
this._body = body;
return this;
},
enumerable: true
},
// - **processor**. The functions that will be used to convert to/from `data` and
// `body` attributes. You can add processors. The two that are built-in are for
// `text/plain`, which is basically an identity transformation and
// `application/json` and other JSON-based media types (including custom media
// types with `+json`). You can add your own processors. See below.
processor: {
get: function() {
var processor = Content.processors[this.type];
if (processor) {
return processor;
} else {
// Return the first processor that matches any part of the
// content type. ex: application/vnd.foobar.baz+json will match json.
var main = this.type.split(";")[0];
var parts = main.split(/\+|\//);
for (var i=0, l=parts.length; i < l; i++) {
processor = Content.processors[parts[i]]
}
return processor || {parser:identity,stringify:toString};
}
},
enumerable: true
},
// - **length**. Typically accessed as `content.length`, returns the length in
// bytes of the raw content entity.
length: {
get: function() {
if (typeof Buffer !== 'undefined') {
return Buffer.byteLength(this.body);
}
return this.body.length;
}
}
});
Content.processors = {};
// The `registerProcessor` function allows you to add your own processors to
// convert content entities. Each processor consists of a Javascript object with
// two properties:
// - **parser**. The function used to parse a raw content entity and convert it
// into a Javascript data type.
// - **stringify**. The function used to convert a Javascript data type into a
// raw content entity.
Content.registerProcessor = function(types,processor) {
// You can pass an array of types that will trigger this processor, or just one.
// We determine the array via duck-typing here.
if (types.forEach) {
types.forEach(function(type) {
Content.processors[type] = processor;
});
} else {
// If you didn't pass an array, we just use what you pass in.
Content.processors[types] = processor;
}
};
// Register the identity processor, which is used for text-based media types.
var identity = function(x) { return x; }
, toString = function(x) { return x.toString(); }
Content.registerProcessor(
["text/html","text/plain","text"],
{ parser: identity, stringify: toString });
// Register the JSON processor, which is used for JSON-based media types.
Content.registerProcessor(
["application/json; charset=utf-8","application/json","json"],
{
parser: function(string) {
return JSON.parse(string);
},
stringify: function(data) {
return JSON.stringify(data); }});
var qs = require('querystring');
// Register the post processor, which is used for JSON-based media types.
Content.registerProcessor(
["application/x-www-form-urlencoded"],
{ parser : qs.parse, stringify : qs.stringify });
// Error functions are defined separately here in an attempt to make the code
// easier to read.
var Errors = {
setDataWithBody: function(object) {
throw new Error("Attempt to set data attribute of a content object " +
"when the body attributes was already set.");
},
setBodyWithData: function(object) {
throw new Error("Attempt to set body attribute of a content object " +
"when the data attributes was already set.");
}
}
module.exports = Content;
\ No newline at end of file
var appName;
var popupMask;
var popupDialog;
var clientId;
var realm;
function handleLogin() {
var scopes = [];
var auths = window.swaggerUi.api.authSchemes || window.swaggerUi.api.securityDefinitions;
if(auths) {
var key;
var defs = auths;
for(key in defs) {
var auth = defs[key];
if(auth.type === 'oauth2' && auth.scopes) {
var scope;
if(Array.isArray(auth.scopes)) {
// 1.2 support
var i;
for(i = 0; i < auth.scopes.length; i++) {
scopes.push(auth.scopes[i]);
}
}
else {
// 2.0 support
for(scope in auth.scopes) {
scopes.push({scope: scope, description: auth.scopes[scope]});
}
}
}
}
}
if(window.swaggerUi.api
&& window.swaggerUi.api.info) {
appName = window.swaggerUi.api.info.title;
}
popupDialog = $(
[
'<div class="api-popup-dialog">',
'<div class="api-popup-title">Select OAuth2.0 Scopes</div>',
'<div class="api-popup-content">',
'<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>' + appName + '</strong> API requires the following scopes. Select which ones you want to grant to Swagger UI.</p>',
'<ul class="api-popup-scopes">',
'</ul>',
'<p class="error-msg"></p>',
'<div class="api-popup-actions"><button class="api-popup-authbtn api-button green" type="button">Authorize</button><button class="api-popup-cancel api-button gray" type="button">Cancel</button></div>',
'</div>',
'</div>'].join(''));
$(document.body).append(popupDialog);
popup = popupDialog.find('ul.api-popup-scopes').empty();
for (i = 0; i < scopes.length; i ++) {
scope = scopes[i];
str = '<li><input type="checkbox" id="scope_' + i + '" scope="' + scope.scope + '"/>' + '<label for="scope_' + i + '">' + scope.scope;
if (scope.description) {
str += '<br/><span class="api-scope-desc">' + scope.description + '</span>';
}
str += '</label></li>';
popup.append(str);
}
var $win = $(window),
dw = $win.width(),
dh = $win.height(),
st = $win.scrollTop(),
dlgWd = popupDialog.outerWidth(),
dlgHt = popupDialog.outerHeight(),
top = (dh -dlgHt)/2 + st,
left = (dw - dlgWd)/2;
popupDialog.css({
top: (top < 0? 0 : top) + 'px',
left: (left < 0? 0 : left) + 'px'
});
popupDialog.find('button.api-popup-cancel').click(function() {
popupMask.hide();
popupDialog.hide();
popupDialog.empty();
popupDialog = [];
});
popupDialog.find('button.api-popup-authbtn').click(function() {
popupMask.hide();
popupDialog.hide();
var authSchemes = window.swaggerUi.api.authSchemes;
var host = window.location;
var pathname = location.pathname.substring(0, location.pathname.lastIndexOf("/"));
var redirectUrl = host.protocol + '//' + host.host + pathname + '/o2c.html';
var url = null;
for (var key in authSchemes) {
if (authSchemes.hasOwnProperty(key)) {
if(authSchemes[key].type === 'oauth2' && authSchemes[key].flow === 'implicit') {
var dets = authSchemes[key];
url = dets.authorizationUrl + '?response_type=token';
window.swaggerUi.tokenName = dets.tokenUrl || 'access_token';
}
else if(authSchemes[key].grantTypes) {
// 1.2 support
var o = authSchemes[key].grantTypes;
for(var t in o) {
if(o.hasOwnProperty(t) && t === 'implicit') {
var dets = o[t];
var ep = dets.loginEndpoint.url;
url = dets.loginEndpoint.url + '?response_type=token';
window.swaggerUi.tokenName = dets.tokenName;
}
}
}
}
}
var scopes = []
var o = $('.api-popup-scopes').find('input:checked');
for(k =0; k < o.length; k++) {
scopes.push($(o[k]).attr('scope'));
}
window.enabledScopes=scopes;
url += '&redirect_uri=' + encodeURIComponent(redirectUrl);
url += '&realm=' + encodeURIComponent(realm);
url += '&client_id=' + encodeURIComponent(clientId);
url += '&scope=' + encodeURIComponent(scopes);
window.open(url);
});
popupMask.show();
popupDialog.show();
return;
}
function handleLogout() {
for(key in window.authorizations.authz){
window.authorizations.remove(key)
}
window.enabledScopes = null;
$('.api-ic.ic-on').addClass('ic-off');
$('.api-ic.ic-on').removeClass('ic-on');
// set the info box
$('.api-ic.ic-warning').addClass('ic-error');
$('.api-ic.ic-warning').removeClass('ic-warning');
}
function initOAuth(opts) {
var o = (opts||{});
var errors = [];
appName = (o.appName||errors.push('missing appName'));
popupMask = (o.popupMask||$('#api-common-mask'));
popupDialog = (o.popupDialog||$('.api-popup-dialog'));
clientId = (o.clientId||errors.push('missing client id'));
realm = (o.realm||errors.push('missing realm'));
if(errors.length > 0){
log('auth unable initialize oauth: ' + errors);
return;
}
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
$('.api-ic').click(function(s) {
if($(s.target).hasClass('ic-off'))
handleLogin();
else {
handleLogout();
}
false;
});
}
function onOAuthComplete(token) {
if(token) {
if(token.error) {
var checkbox = $('input[type=checkbox],.secured')
checkbox.each(function(pos){
checkbox[pos].checked = false;
});
alert(token.error);
}
else {
var b = token[window.swaggerUi.tokenName];
if(b){
// if all roles are satisfied
var o = null;
$.each($('.auth #api_information_panel'), function(k, v) {
var children = v;
if(children && children.childNodes) {
var requiredScopes = [];
$.each((children.childNodes), function (k1, v1){
var inner = v1.innerHTML;
if(inner)
requiredScopes.push(inner);
});
var diff = [];
for(var i=0; i < requiredScopes.length; i++) {
var s = requiredScopes[i];
if(window.enabledScopes && window.enabledScopes.indexOf(s) == -1) {
diff.push(s);
}
}
if(diff.length > 0){
o = v.parentNode;
$(o.parentNode).find('.api-ic.ic-on').addClass('ic-off');
$(o.parentNode).find('.api-ic.ic-on').removeClass('ic-on');
// sorry, not all scopes are satisfied
$(o).find('.api-ic').addClass('ic-warning');
$(o).find('.api-ic').removeClass('ic-error');
}
else {
o = v.parentNode;
$(o.parentNode).find('.api-ic.ic-off').addClass('ic-on');
$(o.parentNode).find('.api-ic.ic-off').removeClass('ic-off');
// all scopes are satisfied
$(o).find('.api-ic').addClass('ic-info');
$(o).find('.api-ic').removeClass('ic-warning');
$(o).find('.api-ic').removeClass('ic-error');
}
}
});
window.authorizations.add('oauth2', new ApiKeyAuthorization('Authorization', 'Bearer ' + b, 'header'));
}
}
}
}
\ No newline at end of file
<script>
var qp = null;
if(window.location.hash) {
qp = location.hash.substring(1);
}
else {
qp = location.search.substring(1);
}
qp = qp ? JSON.parse('{"' + qp.replace(/&/g, '","').replace(/=/g,'":"') + '"}',
function(key, value) {
return key===""?value:decodeURIComponent(value) }
):{}
window.opener.onOAuthComplete(qp);
window.close();
</script>
\ No newline at end of file
<!doctype html>
<html lang="en-US">
<body onload="run()">
</body>
</html>
<script>
'use strict';
function run () {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;
if (/code|token|error/.test(window.location.hash)) {
qp = window.location.hash.substring(1);
} else {
qp = location.search.substring(1);
}
arr = qp.split("&")
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';})
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value)
}
) : {}
isValid = qp.state === sentState
if ((
oauth2.auth.schema.get("flow") === "accessCode"||
oauth2.auth.schema.get("flow") === "authorizationCode"
) && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
});
}
if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
let oauthErrorMsg
if (qp.error) {
oauthErrorMsg = "["+qp.error+"]: " +
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
(qp.error_uri ? "More info: "+qp.error_uri : "");
}
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
</script>
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
{"version":3,"sources":[],"names":[],"mappings":"","file":"swagger-ui.css","sourceRoot":""}
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -38,15 +38,13 @@ import fi.codecrew.moya.model.AccountEvent;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.rest.highcharts.HcSeries;
import fi.codecrew.moya.rest.highcharts.HcSeriesRoot;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.v3.oas.annotations.Operation;
@RequestScoped
@Path("/acc")
//@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
//@Produces({ MediaType.APPLICATION_JSON })
@Api(value = "/acc", description = "Access account events")
public class AccountEventRestView {
@EJB
......@@ -57,8 +55,7 @@ public class AccountEventRestView {
@GET
@Produces({ MediaType.APPLICATION_JSON + "; charset=UTF-8" })
@Path("/boughtTimecount/{productId}")
@ApiOperation("Ask how many times a product has been bought")
@ApiResponse(code = 200, message = "What is this this returned?")
@Operation(description="Ask how many times a product has been bought")
public ArrayList<HcSeriesRoot> boughtTimecount(@PathParam("productId") Integer productId) {
Product product = productBean.findById(productId);
......
......@@ -35,13 +35,16 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.EventMapBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
......@@ -61,7 +64,8 @@ import fi.codecrew.moya.rest.pojo.map.v1.PlaceRoot;
@Path("/placeadmin")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON })
@Api(value = "/placeadmin", description = "Administer places")
@OpenAPIDefinition( tags = {@Tag(name="Maps", description = "Maps"), @Tag(name="Places",description = "Places")},
info = @Info(title = "Administer places"))
public class MapAdminView {
@EJB
......@@ -81,7 +85,7 @@ public class MapAdminView {
@GET
@Path("/background/{mapId}")
@ApiResponse(code = 200, message = "Return backround map as JPEG")
@Operation(description = "Return backround map as JPEG")
public Response getMapBg(@PathParam("mapId") Integer mapid) {
try {
EventMap map = placebean.findMap(mapid);
......@@ -95,8 +99,7 @@ public class MapAdminView {
@GET
@Path("/maps")
@ApiOperation(value = "Get All maps", response = MapRoot.class)
@ApiResponse(code = 200, message = "Return all maps")
@Operation(description = "Get All maps", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = MapRoot.class))) })
public MapRoot getAllMaps() {
try {
MapRoot ret = PojoUtils.parseMaps(eventbean.getCurrentEvent().getEventMaps());
......@@ -110,7 +113,7 @@ public class MapAdminView {
@GET
@Path("/places/{mapId}")
@ApiOperation(value = "Get places by mapId", response = PlaceRoot.class)
@Operation(description = "Get places by mapId", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = PlaceRoot.class))) })
public PlaceRoot getPlaces(@PathParam("mapId") Integer mapid) {
try {
EventMap map = placebean.findMap(mapid);
......@@ -125,7 +128,6 @@ public class MapAdminView {
@DELETE
@Path("/place/{id}")
@ApiOperation("Delete a place")
public Response deletePlace(@PathParam("id") Integer id) {
try {
Place place = eventmapbean.findPlace(id);
......@@ -142,8 +144,7 @@ public class MapAdminView {
@GET
@Path("/place/")
@ApiOperation(value = "Always returns 406 - Not acceptable")
@ApiResponse(code = 406, message = "Nope. Not acceptable.")
@Operation(description = "Always returns 406 - Not acceptable")
public Response getPlaceError() {
try {
ResponseBuilder ret = Response.ok();
......@@ -158,7 +159,7 @@ public class MapAdminView {
@POST
@Path("/place/")
@ApiOperation(value = "Create a place", response = PlacePojo.class)
@Operation(description = "Create a place", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = PlacePojo.class))) })
public Response createPlace(PlacePojo create) {
try {
logger.info("Finding map with id {}", create.getMapId());
......@@ -183,7 +184,7 @@ public class MapAdminView {
@PUT
@Path("/place/{id}")
@ApiOperation(value = "Set a place", response = PlacePojo.class)
@Operation(description = "Set a place", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = PlacePojo.class))) })
public Response updatePlace(@PathParam("id") Integer id, PlacePojo update) {
try {
if (update == null || id == null) {
......@@ -207,7 +208,7 @@ public class MapAdminView {
@PUT
@Path("/place/{placeId}/release")
@ApiOperation("Release a class")
@Operation(description = "release a class")
public Response releasePlace(@PathParam("placeId") Integer placeId) {
try {
Place place = eventmapbean.findPlace(placeId);
......@@ -226,7 +227,7 @@ public class MapAdminView {
@PUT
@Path("/place/{placeId}/reserve/{eventuserId}")
@ApiOperation("Reserve a place")
@Operation(description = "Reserve a place")
public Response reserve(@PathParam("placeId") Integer placeId, @PathParam("eventuserId") Integer eventuserId) {
try {
Place place = eventmapbean.findPlace(placeId);
......
......@@ -18,48 +18,52 @@
*/
package fi.codecrew.moya.rest;
import javax.ws.rs.ApplicationPath;
import io.swagger.jaxrs.listing.ApiListingResource;
import org.glassfish.jersey.filter.LoggingFilter;
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
import io.swagger.v3.oas.integration.SwaggerConfiguration;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.servers.Server;
import org.glassfish.jersey.logging.LoggingFeature;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletConfig;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Context;
import java.util.Arrays;
import io.swagger.jaxrs.config.BeanConfig;
@ApplicationPath(RestApplicationEntrypoint.REST_PATH)
public class RestApplicationEntrypoint extends ResourceConfig {
private static final Logger logger = LoggerFactory.getLogger(RestApplicationEntrypoint.class);
public static final String REST_PATH = "/rest";
private static final String BASE_URL = "/MoyaWeb";
private static final String API_RESOURCE_PACKAGE = "fi.codecrew.moya.rest";
public RestApplicationEntrypoint() {
super();
Server srv = new Server();
srv.setUrl("/MoyaWeb/");
// swagger
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.0");
beanConfig.setBasePath(BASE_URL + REST_PATH);
beanConfig.setResourcePackage(API_RESOURCE_PACKAGE);
beanConfig.setScan(true);
register(beanConfig);
OpenAPI oas = new OpenAPI();
oas.setServers(Arrays.asList(srv));
//ReflectiveJaxrsScanner scanner = new ReflectiveJaxrsScanner();
//scanner.setResourcePackage(API_RESOURCE_PACKAGE);
//ScannerFactory.setScanner(scanner);
//ClassReaders.setReader(new JerseyApiReader());
//ClassReaders.setReader(new DefaultJaxrsApiReader());
SwaggerConfiguration swagCfg = new SwaggerConfiguration();
swagCfg.setPrettyPrint(true);
swagCfg.setOpenAPI(oas);
// register(ApiListingResource.class);
//register(JerseyApiDeclarationProvider.class);
//register(JerseyResourceListingProvider.class);
OpenApiResource openApiResource = new OpenApiResource();
openApiResource.setOpenApiConfiguration(swagCfg);
register(openApiResource);
// mime multipart image uploads
register(MultiPartFeature.class);
// packages to scan
packages("io.swagger.jaxrs.json", "fi.codecrew.moya.rest");
registerInstances(new LoggingFilter());
packages("fi.codecrew.moya.rest");
registerInstances(new LoggingFeature());
}
}
......@@ -44,13 +44,17 @@ import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import fi.codecrew.moya.model.*;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
......@@ -72,7 +76,9 @@ import fi.codecrew.moya.utilities.SearchResult;
@Path("/user")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON + "; charset=UTF-8"})
@Api(value = "/user", description = "Administer users")
@OpenAPIDefinition(
tags = @Tag(name = "Users", description="User management"),
info = @Info(title = "Administer users"))
public class UserRestView {
@EJB
......@@ -103,7 +109,7 @@ public class UserRestView {
@POST
@Path("/giveplace/{placeId}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@ApiOperation(value = "Set place status to give/ungive", response = UserReservationPlacePojo.class)
@Operation(description = "Set place status to give/ungive", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = UserReservationPlacePojo.class))) })
public Response setPlacesGivenStatus(
@PathParam("placeId") Integer id,
@FormParam("action") String status) {
......@@ -145,7 +151,7 @@ public class UserRestView {
@GET
@Path("/reservationswithcode/{code}")
@ApiOperation(value = "Get places with code", response = UserReservationRoot.class)
@Operation(description = "Get places with code", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = UserReservationRoot.class))) })
public Response getPlacesWithCode(@PathParam("code") String code) {
try {
......@@ -177,7 +183,7 @@ public class UserRestView {
@GET
@Path("/{userid}/reservations")
@ApiOperation(value = "Get user's reservations", response = UserReservationRoot.class)
@Operation(description = "Get user's reservations", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = UserReservationRoot.class))) })
public Response usersPlaces(@PathParam("userid") Integer userid) {
EventUser eu = userbean.findByUserId(userid, false);
if (eu != null) {
......@@ -198,7 +204,7 @@ public class UserRestView {
@Path("/auth")
@Produces({MediaType.APPLICATION_JSON})
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@ApiOperation(value = "Authenticate", response = EventUserRestPojo.class)
@Operation(description = "Authenticate", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class))) })
public Response auth(
@FormParam("username") String username,
@FormParam("password") String password) {
......@@ -237,7 +243,7 @@ public class UserRestView {
@GET
@Path("/eventusers")
@ApiOperation(value = "Get EventUsers", response = SimpleEventuserRoot.class)
@Operation(description = "Get EventUsers", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = SimpleEventuserRoot.class))) })
public SimpleEventuserRoot getEventUsers(
@DefaultValue("0") @QueryParam("pagesize") Integer pagesize,
@DefaultValue("0") @QueryParam("page") Integer page,
......@@ -258,9 +264,9 @@ public class UserRestView {
@GET
@Path("/card/{eventuserId}")
@ApiOperation(value = "Get PrintedCard for EventUser", response = PrintedCardRestPojo.class)
@Operation(description = "Get PrintedCard for EventUser", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = PrintedCardRestPojo.class))) })
public PrintedCardRestPojo getUsersCard(
@ApiParam("EventUser entity ID") @PathParam("eventuserId") Integer eventuserid) {
@Parameter(description = "EventUser entity ID") @PathParam("eventuserId") Integer eventuserid) {
EventUser user = userbean.findByEventUserId(eventuserid);
logger.warn("users card for user: {}", user);
PrintedCard card = cardbean.checkPrintedCard(user);
......@@ -274,9 +280,9 @@ public class UserRestView {
@GET
@Path("/eventuser/{cardauthcode}")
@ApiOperation(value = "Get EventUser by cardAuthCode", response = EventUserRestPojo.class)
@Operation(description = "Get EventUser by cardAuthCode", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class))) })
public EventUserRestPojo getEventUser(
@ApiParam("Card authentication code") @PathParam("cardauthcode") String code) {
@Parameter(description ="Card authentication code") @PathParam("cardauthcode") String code) {
EventUser user = userbean.getUserByAuthcode(code);
if (user != null)
......@@ -288,9 +294,13 @@ public class UserRestView {
@GET
@Path("/")
@Produces({MediaType.APPLICATION_JSON})
@ApiOperation(value = "Find event user", response = EventUserRestPojo.class)
public Response getEventUser(@QueryParam("email") @ApiParam("Email address") String email,
@QueryParam("login") @ApiParam("Username") String userName) {
@Operation(
description = "Find event user",
responses = {
@ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class)))
})
public Response getEventUser(@QueryParam("email") @Parameter(description = "Email address") String email,
@QueryParam("login") @Parameter(description = "Username") String userName) {
try {
if (permbean.hasPermission(UserPermission.VIEW_ALL) == false) {
return Response.status(Status.FORBIDDEN).build();
......@@ -327,10 +337,10 @@ public class UserRestView {
@POST
@Path("/{userid}/check-password")
@Produces({MediaType.APPLICATION_JSON})
@ApiOperation(value = "Check user password", response = EventUserRestPojo.class)
@Operation(description = "Check user password", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class))) })
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response checkPassword(@PathParam("userid") @ApiParam("User ID") Integer userId,
@FormParam("password") @ApiParam("Password") String password) {
public Response checkPassword(@PathParam("userid") @Parameter(description = "User ID") Integer userId,
@FormParam("password") @Parameter(description = "Password") String password) {
try {
if (permbean.hasPermission(UserPermission.VIEW_ALL) == false) {
return Response.status(Status.FORBIDDEN).build();
......@@ -358,10 +368,10 @@ public class UserRestView {
@POST
@Path("/{userid}/reset-password")
@Produces({MediaType.APPLICATION_JSON})
@ApiOperation(value = "Reset user password", response = EventUserRestPojo.class)
@Operation(description = "Reset user password", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class))) })
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response resetPassword(@PathParam("userid") @ApiParam("User ID") Integer userId,
@FormParam("password") @ApiParam("New password") String password) {
public Response resetPassword(@PathParam("userid") @Parameter(description = "User ID") Integer userId,
@FormParam("password") @Parameter(description = "New password") String password) {
try {
if (permbean.hasPermission(UserPermission.MODIFY) == false || permbean.hasPermission(UserPermission.VIEW_ALL)) {
return Response.status(Status.FORBIDDEN).build();
......@@ -386,10 +396,10 @@ public class UserRestView {
*/
@PUT
@Path("/{userid}/image")
@ApiOperation(value = "Upload image", response = EventUserRestPojo.class)
@Operation(description = "Upload image", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class))) })
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response updateUserImage(@Context HttpServletRequest request,
@PathParam("userid") @ApiParam("User ID") Integer userId) throws IOException {
@PathParam("userid") @Parameter(description = "User ID") Integer userId) throws IOException {
try {
if (permbean.hasPermission(UserPermission.MODIFY) == false || permbean.hasPermission(UserPermission.VIEW_ALL)) {
return Response.status(Status.FORBIDDEN).build();
......
package fi.codecrew.moya.rest.apiapp.v1;
import java.nio.charset.Charset;
import java.security.Principal;
import java.util.Base64;
import fi.codecrew.moya.beans.ApiApplicationBeanLocal;
import fi.codecrew.moya.model.ApiApplication;
import fi.codecrew.moya.model.ApiApplicationInstance;
import fi.codecrew.moya.rest.pojo.userinfo.v1.ApiApplicationInstancePojo;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
......@@ -12,22 +17,15 @@ import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.ApiApplicationBeanLocal;
import fi.codecrew.moya.model.ApiApplication;
import fi.codecrew.moya.model.ApiApplicationInstance;
import fi.codecrew.moya.rest.pojo.userinfo.v1.ApiApplicationInstancePojo;
import fi.codecrew.moya.rest.pojo.userinfo.v1.UserPwdPojo;
import io.swagger.annotations.Api;
import java.security.Principal;
import java.util.Base64;
@RequestScoped
@Path("/apiapp/v1")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON + "; charset=UTF-8"})
@Api(value = "/apiapp/v1/", description = "Manage api application and keys")
@OpenAPIDefinition(
info = @Info(title = "Manage api application and keys"))
public class ApiAppRestViewV1 {
private static final Logger logger = LoggerFactory.getLogger(ApiAppRestViewV1.class);
......
package fi.codecrew.moya.rest.appconfig.v1;
import java.security.Principal;
import java.util.Base64;
import java.util.Date;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.rest.PojoUtils;
import fi.codecrew.moya.rest.pojo.appconfig.v1.EventRoot;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import jdk.nashorn.internal.objects.annotations.Getter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.rest.PojoUtils;
import fi.codecrew.moya.rest.apiapp.v1.ApiAppRestViewV1;
import fi.codecrew.moya.rest.pojo.appconfig.v1.EventRoot;
import fi.codecrew.moya.rest.pojo.userinfo.v1.UserPwdPojo;
import java.security.Principal;
import java.util.Base64;
/**
* Created by tuukka on 28.3.2015.
......@@ -36,7 +35,8 @@ import fi.codecrew.moya.rest.pojo.userinfo.v1.UserPwdPojo;
@Path("/appconfig/v1/eventinfo")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON + "; charset=UTF-8"})
@Api(value = "/appconfig/v1/eventinfo", description = "Event information for application")
@OpenAPIDefinition(
info = @Info(title = "Event information for application"))
public class EventInfoV1 {
private static final Logger logger = LoggerFactory.getLogger(EventInfoV1.class);
......@@ -90,8 +90,7 @@ public class EventInfoV1 {
@GET
@Path("/listevents/")
@ApiOperation(value = "Get all events for current user", response = EventRoot.class)
@ApiResponse(code = 200, message = "Return events for current user")
@Operation(description = "Get all events for current user", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventRoot.class))) })
public Response getEventsForCurrentUser() {
if (permissionBean.getCurrentUser().isAnonymous()) {
......
......@@ -32,19 +32,18 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.PathSegment;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.EventUser;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.info.Info;
@RequestScoped
@Path("/meta/v1/eventuser")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON + "; charset=UTF-8" })
@Api(value="/meta/v1/eventuser", description = "Access EventUser meta data")
@OpenAPIDefinition(info = @Info(description = "Access EventUser meta data"))
public class EventUserRestViewV1 extends AbstractRestViewV1 {
@EJB
......@@ -52,10 +51,10 @@ public class EventUserRestViewV1 extends AbstractRestViewV1 {
@GET
@Path("/{id}/{path:.*}")
@ApiOperation(value = "Get metadata for EventUser by id")
@Operation(description = "Get metadata for EventUser by id")
public String getMeta(
@ApiParam("EventUser entity ID") @PathParam("id") Integer id,
@ApiParam("Path in JSON metadata object") @PathParam("path") List<PathSegment> path) {
@Parameter(description = "EventUser entity ID") @PathParam("id") Integer id,
@Parameter(description = "Path in JSON metadata object") @PathParam("path") List<PathSegment> path) {
EventUser eventUser = userBean.findByEventUserId(id);
return getEntityMeta(eventUser, path);
......@@ -63,12 +62,11 @@ public class EventUserRestViewV1 extends AbstractRestViewV1 {
@PUT
@Path("/{id}/{path:.*}")
@ApiOperation(value="Set EventUser metada path", notes ="foo")
@ApiResponse(code = 200, message = "OK")
@Operation(description="Set EventUser metada path")
public void putMeta(
@ApiParam("EventUser entity ID") @PathParam("id") Integer id,
@ApiParam("Path in metadata JSON object") @PathParam("path") List<PathSegment> path,
@ApiParam("JSON to store") String jsonString) {
@Parameter(description = "EventUser entity ID") @PathParam("id") Integer id,
@Parameter(description = "Path in metadata JSON object") @PathParam("path") List<PathSegment> path,
@Parameter(description = "JSON to store") String jsonString) {
EventUser eventUser = userBean.findByEventUserId(id);
setEntityMeta(eventUser, path, jsonString);
......@@ -77,7 +75,7 @@ public class EventUserRestViewV1 extends AbstractRestViewV1 {
@POST
@Path("/{id}/{path:.*}")
@ApiOperation("Set EventUser metadata path with POST")
@Operation(description = "Set EventUser metadata path with POST")
public void postMeta(
@PathParam("id") Integer id,
@PathParam("path") List<PathSegment> path, String jsonString) {
......
......@@ -32,19 +32,19 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.PathSegment;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.model.PrintedCard;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.info.Info;
@RequestScoped
@Path("/meta/v1/printedcard")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON + "; charset=UTF-8" })
@Api(value = "/meta/v1/printedcard", description = "PrintedCard metadata access")
@OpenAPIDefinition(
info = @Info(title = "PrintedCard metadata access"))
public class PrintedCardRestViewV1 extends AbstractRestViewV1 {
@EJB
......@@ -52,10 +52,10 @@ public class PrintedCardRestViewV1 extends AbstractRestViewV1 {
@GET
@Path("/{id}/{path:.*}")
@ApiOperation("Return PrintedCard metadata")
@Operation(description = "Return PrintedCard metadata")
public String getMeta(
@ApiParam("PrintedCard entity ID") @PathParam("id") Integer id,
@ApiParam(value="Path in metadata JSON object") @PathParam("path") List<PathSegment> path) {
@Parameter(description = "PrintedCard entity ID") @PathParam("id") Integer id,
@Parameter(description = "Path in metadata JSON object") @PathParam("path") List<PathSegment> path) {
PrintedCard printedCard = cardTemplateBeanLocal.findCard(id);
return getEntityMeta(printedCard, path);
......@@ -63,12 +63,11 @@ public class PrintedCardRestViewV1 extends AbstractRestViewV1 {
@PUT
@Path("/{id}/{path:.*}")
@ApiOperation("Set PrintedCard metadata path")
@ApiResponse(code = 200, message = "OK")
@Operation(description = "Set PrintedCard metadata path")
public void putMeta(
@ApiParam("PrintedCard entity ID") @PathParam("id") Integer id,
@ApiParam("Path in metadata JSON object") @PathParam("path") List<PathSegment> path,
@ApiParam("JSON object to store in metadata") String jsonString) {
@Parameter(description = "PrintedCard entity ID") @PathParam("id") Integer id,
@Parameter(description = "Path in metadata JSON object") @PathParam("path") List<PathSegment> path,
@Parameter(description = "JSON object to store in metadata") String jsonString) {
PrintedCard printedCard = cardTemplateBeanLocal.findCard(id);
setEntityMeta(printedCard, path, jsonString);
......@@ -77,7 +76,7 @@ public class PrintedCardRestViewV1 extends AbstractRestViewV1 {
@POST
@Path("/{id}/{path:.*}")
@ApiOperation("Set PrintedCard metadata path. Please use PUT.")
@Operation(description = "Set PrintedCard metadata path. Please use PUT.")
public void postMeta(@PathParam("id") Integer id,
@PathParam("path") List<PathSegment> path, String jsonString) {
......
......@@ -32,15 +32,18 @@ import javax.ws.rs.core.PathSegment;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.info.Info;
@RequestScoped
@Path("/meta/v1/user")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON + "; charset=UTF-8" })
@Api(value = "/meta/v1/user", description = "Access User metadata")
@OpenAPIDefinition(
info = @Info(title = "Access User metadata"))
public class UserRestViewV1 extends AbstractRestViewV1 {
@EJB
......@@ -48,10 +51,10 @@ public class UserRestViewV1 extends AbstractRestViewV1 {
@GET
@Path("/{id}/{path:.*}")
@ApiOperation("Get metadata for user")
@Operation(description="Get metadata for user")
public String getMeta(
@ApiParam("User entity ID") @PathParam("id") Integer id,
@ApiParam("Path in metadata JSON object") @PathParam("path") List<PathSegment> path) {
@Parameter(description = "User entity ID") @PathParam("id") Integer id,
@Parameter(description = "Path in metadata JSON object") @PathParam("path") List<PathSegment> path) {
User user = userBean.getUser(id);
return getEntityMeta(user, path);
......
......@@ -4,11 +4,11 @@ import javax.xml.bind.annotation.XmlRootElement;
import fi.codecrew.moya.model.Place;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModel;
@XmlRootElement()
@ApiModel(description = "PlaceCode")
public class PlaceCodePojo {
public PlaceCodePojo() {
......
package fi.codecrew.moya.rest.v2;
import java.util.List;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.rest.v2.pojo.ProductPojo;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
......@@ -9,15 +12,12 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.rest.v2.pojo.ProductPojo;
import io.swagger.annotations.Api;
import java.util.List;
@RequestScoped
@Path("/v2/product")
@Api(value = "/v2/product", description = "Product operations")
@OpenAPIDefinition(
info = @Info(title = "Product operations"))
public class ProductRestView {
@EJB
......
......@@ -6,12 +6,15 @@ import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.*;
import fi.codecrew.moya.rest.PojoUtils;
import fi.codecrew.moya.rest.pojo.userinfo.v1.EventUserRestPojo;
import fi.codecrew.moya.rest.pojo.userinfo.v3.PrintedCardRestPojoV3;
import fi.codecrew.moya.rest.pojo.userinfo.v1.PrintedCardUpdateCodePojo;
import fi.codecrew.moya.rest.v2.pojo.UserPojo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;
......@@ -31,7 +34,8 @@ import java.io.InputStream;
@RequestScoped
@Path("/v2/user")
@Api(value = "/v2/user", description = "User operations")
@OpenAPIDefinition(
info = @Info(title = "User operations"))
public class UserRestViewV2 {
private static final Logger logger = LoggerFactory.getLogger(UserRestViewV2.class);
......@@ -54,9 +58,9 @@ public class UserRestViewV2 {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Find user", response = UserPojo.class)
public Response getEventUser(@QueryParam("email") @ApiParam("Email address") String email,
@QueryParam("login") @ApiParam("Username") String userName) {
@Operation(description = "Find user", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = UserPojo.class))) })
public Response getEventUser(@QueryParam("email") @Parameter(description = "Email address") String email,
@QueryParam("login") @Parameter(description = "Username") String userName) {
try {
if (permissionBean.hasPermission(UserPermission.VIEW_ALL) == false) {
return Response.status(Response.Status.FORBIDDEN).build();
......@@ -85,8 +89,8 @@ public class UserRestViewV2 {
@GET
@Path("/{userid}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Get user", response = UserPojo.class)
public Response getEventUser(@PathParam("userid") @ApiParam("User ID") Integer userId) {
@Operation(description = "Get user", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = UserPojo.class))) })
public Response getEventUser(@PathParam("userid") @Parameter(description = "User ID") Integer userId) {
try {
if (permissionBean.hasPermission(UserPermission.VIEW_ALL) == false) {
return Response.status(Response.Status.FORBIDDEN).build();
......@@ -111,7 +115,7 @@ public class UserRestViewV2 {
@GET
@Path("/current")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Fetch current user", response = EventUserRestPojo.class)
@Operation(description = "Fetch current user", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class))) })
public Response getCurrentUser() {
EventUser usr = permissionBean.getCurrentUser();
logger.info("Got current user {} ", usr);
......@@ -126,7 +130,7 @@ public class UserRestViewV2 {
@Path("/create")
@Produces({MediaType.APPLICATION_JSON})
@Consumes(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Create user", response = UserPojo.class)
@Operation(description = "Create user", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = UserPojo.class))) })
public Response createUser(UserPojo userPojo) {
if (permissionBean.hasPermission(UserPermission.CREATE_NEW) == false) {
return Response.status(Response.Status.FORBIDDEN).build();
......@@ -163,7 +167,7 @@ public class UserRestViewV2 {
@PUT
@ApiOperation(value = "Update code ")
@Operation(description = "Update code ")
@Path("/{userid}/cardcode")
public Response updateUserCard(PrintedCardUpdateCodePojo codepojo, @PathParam("userid") Integer userid) {
ReaderEvent event = readerbean.checkCode(codepojo.getReaderName(), codepojo.getCode());
......@@ -195,10 +199,10 @@ public class UserRestViewV2 {
*/
@PUT
@Path("/{userid}/image")
@ApiOperation(value = "Upload image", response = EventUserRestPojo.class)
@Operation(description = "Upload image", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = EventUserRestPojo.class))) })
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response updateUserImage(@Context HttpServletRequest request,
@PathParam("userid") @ApiParam("User ID") Integer userId,
@PathParam("userid") @Parameter(description = "User ID") Integer userId,
@FormDataParam("image") FormDataContentDisposition imageInfo,
@FormDataParam("image") InputStream imageStream,
@FormDataParam("image") FormDataBodyPart body) {
......@@ -229,12 +233,12 @@ public class UserRestViewV2 {
*/
@GET
@Path("/{userid}/image")
@ApiOperation(value = "Download user image")
@Operation(description = "Download user image")
//@Consumes()
//@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
//@Produces({MediaType.APPLICATION_JSON, "image/png", "image/jpeg"})
//@Produces({MediaType.MULTIPART_FORM_DATA, "image/png", "image/jpeg"})
public Response downloadUserImage(@PathParam("userid") @ApiParam("User ID") Integer userId) {
public Response downloadUserImage(@PathParam("userid") @Parameter(description = "User ID") Integer userId) {
try {
User user = userBean.getUser(userId);
UserImage image = user.getCurrentImage();
......@@ -263,9 +267,9 @@ public class UserRestViewV2 {
@Path("/{userid}/check-password")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@ApiOperation(value = "Check user password", response = UserPojo.class)
public Response checkPassword(@PathParam("userid") @ApiParam("User ID") Integer userId,
@FormParam("password") @ApiParam("Password") String password) {
@Operation(description = "Check user password", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = UserPojo.class))) })
public Response checkPassword(@PathParam("userid") @Parameter(description = "User ID") Integer userId,
@FormParam("password") @Parameter(description = "Password") String password) {
try {
if (permissionBean.hasPermission(UserPermission.VIEW_ALL) == false) {
return Response.status(Response.Status.FORBIDDEN).build();
......
......@@ -17,8 +17,6 @@ import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import io.swagger.annotations.Api;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
......@@ -31,21 +29,15 @@ import fi.codecrew.moya.rest.pojo.vip.v2.VipRestPojo;
import fi.codecrew.moya.rest.v2.pojo.VipPojoUtils;
import fi.codecrew.moya.utilities.SearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
import io.swagger.annotations.Api;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.ws.rs.*;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.tags.Tag;
@RequestScoped
@Path("/v2/vip")
@Api(value = "/v2/vip", description = "Vip list operations")
@OpenAPIDefinition(
tags = @Tag(name="Viplist", description = "Viplist"),
info = @Info(title = "Vip list operations"))
@Produces({MediaType.APPLICATION_JSON + "; charset=UTF-8"})
@Consumes({MediaType.APPLICATION_JSON})
public class VipRestView {
......
......@@ -6,12 +6,12 @@ import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import io.swagger.annotations.ApiModel;
import fi.codecrew.moya.model.Product;
@XmlRootElement()
@ApiModel(description = "Product")
public class ProductPojo {
public Integer id;
......
package fi.codecrew.moya.rest.v2.pojo;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;
......@@ -10,7 +10,7 @@ import java.util.Date;
* Created by jkj on 2015-05-31.
*/
@XmlRootElement()
@ApiModel(description = "User")
public class UserPojo {
public enum UserGender {
......
......@@ -2,10 +2,10 @@ package fi.codecrew.moya.rest.v3;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.rest.v3.pojo.LocalePojoV3;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
......@@ -15,7 +15,8 @@ import javax.ws.rs.core.Response;
@RequestScoped
@Path("/v3/locale")
@Api(value = "/v3/locale", description = "Locale operations")
@OpenAPIDefinition(
info = @Info(title = "Locale operations"))
@Produces({MediaType.APPLICATION_JSON + "; charset=UTF-8"})
@Consumes({MediaType.APPLICATION_JSON})
public class LocaleRestViewV3 {
......
......@@ -6,9 +6,12 @@ import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.rest.pojo.userinfo.v1.PrintedCardUpdateCodePojo;
import fi.codecrew.moya.rest.pojo.userinfo.v3.PrintedCardRestPojoV3;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -22,7 +25,6 @@ import javax.ws.rs.core.Response;
@RequestScoped
@Path("/v3/user")
@Api(value = "/v3/user", description = "User operations")
public class UserRestViewV3 {
private static final Logger logger = LoggerFactory.getLogger(UserRestViewV3.class);
......@@ -38,11 +40,8 @@ public class UserRestViewV3 {
@EJB
private CardTemplateBeanLocal cardBean;
@PUT
@ApiOperation(value = "Update code ")
@Operation(description = "Update code ")
@Path("/{userid}/cardcode")
public Response updateUserCard(PrintedCardUpdateCodePojo codepojo, @PathParam("userid") Integer userid) {
ReaderEvent event = readerbean.checkCode(codepojo.getReaderName(), codepojo.getCode());
......@@ -64,12 +63,10 @@ public class UserRestViewV3 {
return Response.status(status).entity(PojoFactoryV3.createReaderEventRestPojo(event)).build();
}
@GET
@Path("/card/{eventuserId}")
@ApiOperation(value = "Get PrintedCard for EventUser", response = PrintedCardRestPojoV3.class)
public PrintedCardRestPojoV3 getUsersCard(@ApiParam("EventUser entity ID") @PathParam("eventuserId") Integer eventuserid) {
@Operation(description = "Get PrintedCard for EventUser", responses = { @ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = PrintedCardRestPojoV3.class))) })
public PrintedCardRestPojoV3 getUsersCard(@Parameter(description = "EventUser entity ID") @PathParam("eventuserId") Integer eventuserid) {
EventUser user = userBean.findByEventUserId(eventuserid);
logger.warn("users card for user: {}", user);
......
......@@ -6,11 +6,11 @@ import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.beans.VipBeanLocal;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Vip;
import fi.codecrew.moya.model.VipProduct;
import fi.codecrew.moya.rest.v3.pojo.VipRestPojoV3;
import fi.codecrew.moya.utilities.SearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
......@@ -28,7 +28,8 @@ import java.util.List;
*/
@RequestScoped
@Path("/v3/vip")
@Api(value = "/v3/vip", description = "Vip list operations")
@OpenAPIDefinition(
info = @Info(title = "Vip list operations"))
@Produces({ MediaType.APPLICATION_JSON + "; charset=UTF-8" })
@Consumes({ MediaType.APPLICATION_JSON })
public class VipRestViewV3 {
......
......@@ -3,7 +3,7 @@ package fi.codecrew.moya.rest.v3.pojo;
import fi.codecrew.moya.model.Vip;
import fi.codecrew.moya.model.VipProduct;
import fi.codecrew.moya.rest.pojo.vip.v2.VipProductPojo;
import io.swagger.annotations.ApiModel;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
......
......@@ -32,6 +32,7 @@
<ejb-spec-version>3.2</ejb-spec-version>
<swagger.version>1.5.20</swagger.version>
<swaggerv3.version>2.0.2</swaggerv3.version>
<slf4j.version>1.7.25</slf4j.version>
<logback.version>1.2.3</logback.version>
<testng.version>6.14.3</testng.version>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!