Skip to content

Commit

Permalink
(flavor) custom-swagger v2.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
devinivy committed Aug 30, 2020
1 parent d71d5d7 commit d5e3873
Show file tree
Hide file tree
Showing 5 changed files with 118 additions and 1 deletion.
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"main": "lib/index.js",
"scripts": {
"start": "node server",
"test": "lab -a @hapi/code -L",
"test": "lab -a @hapi/code -I \"__core-js_shared__,CSS,regeneratorRuntime,core\" -L",
"lint": "eslint ."
},
"dependencies": {
Expand All @@ -18,11 +18,14 @@
"@hapi/eslint-plugin-hapi": "4.x.x",
"@hapi/glue": "8.x.x",
"@hapi/hapi": "20.x.x",
"@hapi/inert": "6.x.x",
"@hapi/lab": "23.x.x",
"@hapi/vision": "6.x.x",
"babel-eslint": "10.x.x",
"confidence": "4.x.x",
"dotenv": "8.x.x",
"eslint": "7.x.x",
"hapi-swagger": "14.x.x",
"hpal": "2.x.x",
"hpal-debug": "1.x.x",
"toys": "2.x.x"
Expand Down
3 changes: 3 additions & 0 deletions server/manifest.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ module.exports = new Confidence.Store({
plugin: '../lib', // Main plugin
options: {}
},
{
plugin: './plugins/swagger'
},
{
plugin: {
$filter: { $env: 'NODE_ENV' },
Expand Down
1 change: 1 addition & 0 deletions server/plugins/swagger/debug.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{{hapiSwagger.stringified}}}
83 changes: 83 additions & 0 deletions server/plugins/swagger/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>{{ hapiSwagger.info.title }}</title>
<link rel="stylesheet" type="text/css" href="{{ hapiSwagger.swaggerUIPath }}swagger-ui.css" />
<link rel="icon" type="image/png" href="{{ hapiSwagger.swaggerUIPath }}favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="{{ hapiSwagger.swaggerUIPath }}favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}

*,
*:before,
*:after {
box-sizing: inherit;
}

body {
margin: 0;
background: #fafafa;
}
</style>
</head>

<body>
<div id="swagger-ui"></div>
<script src="{{ hapiSwagger.swaggerUIPath }}swagger-ui-bundle.js"></script>
<script src="{{ hapiSwagger.swaggerUIPath }}swagger-ui-standalone-preset.js"></script>
<script src="{{ hapiSwagger.swaggerUIPath }}extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}

window.onload = function() {

var url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "{{{hapiSwagger.jsonPath}}}";
}

// pull validatorUrl string or null form server
var validatorUrl = null;
{{#if hapiSwagger.validatorUrl}}
validatorUrl: '{{hapiSwagger.validatorUrl}}';
{{/if}}

var ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
var accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];

var swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "{{hapiSwagger.expanded}}",
tagsSorter: apisSorter.{{hapiSwagger.sortTags}},
operationsSorter: operationsSorter.{{hapiSwagger.sortEndpoints}},
}

var ui = SwaggerUIBundle(swaggerOptions);

window.ui = ui;
};
</script>
</body>
</html>
27 changes: 27 additions & 0 deletions server/plugins/swagger/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict';

const Inert = require('@hapi/inert');
const Vision = require('@hapi/vision');
const HapiSwagger = require('hapi-swagger');
const Package = require('../../../package.json');

module.exports = {
name: 'app-swagger',
async register(server) {

await server.register([
Inert,
Vision,
{
plugin: HapiSwagger,
options: {
templates: __dirname,
validatorUrl: null,
info: {
version: Package.version
}
}
}
]);
}
};

0 comments on commit d5e3873

Please sign in to comment.