Skip to content
Snippets Groups Projects
Commit a7cc48e0 authored by Alexander Rose's avatar Alexander Rose
Browse files

volume server api docs tweaks

parent 2448ca8a
No related branches found
No related tags found
No related merge requests found
...@@ -16,13 +16,19 @@ export function swaggerUiAssetsHandler(options?: ServeStaticOptions) { ...@@ -16,13 +16,19 @@ export function swaggerUiAssetsHandler(options?: ServeStaticOptions) {
return express.static(getAbsoluteFSPath(), opts) return express.static(getAbsoluteFSPath(), opts)
} }
function createHTML(swaggerUrl: string, apiPrefix: string) { export interface SwaggerUIOptions {
openapiJsonUrl: string
apiPrefix: string
shortcutIconLink: string
}
function createHTML(options: SwaggerUIOptions) {
const htmlTemplate = fs.readFileSync(`${__dirname}/indexTemplate.html`).toString() const htmlTemplate = fs.readFileSync(`${__dirname}/indexTemplate.html`).toString()
return interpolate(htmlTemplate, { swaggerUrl, apiPrefix }) return interpolate(htmlTemplate, options)
} }
export function swaggerUiIndexHandler(swaggerUrl: string, apiPrefix: string): express.Handler { export function swaggerUiIndexHandler(options: SwaggerUIOptions): express.Handler {
const html = createHTML(swaggerUrl, apiPrefix) const html = createHTML(options)
return (req: express.Request, res: express.Response) => { return (req: express.Request, res: express.Response) => {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(html); res.end(html);
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Swagger UI</title> <title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="${apiPrefix}/swagger-ui.css" > <link rel="stylesheet" type="text/css" href="${apiPrefix}/swagger-ui.css" >
${shortcutIconLink}
<style> <style>
html html
{ {
...@@ -42,7 +44,7 @@ ...@@ -42,7 +44,7 @@
} }
window.onload = function () { window.onload = function () {
var ui = SwaggerUIBundle({ var ui = SwaggerUIBundle({
url: '${swaggerUrl}', url: '${openapiJsonUrl}',
validatorUrl: null, validatorUrl: null,
docExpansion: 'list', docExpansion: 'list',
dom_id: '#swagger-ui', dom_id: '#swagger-ui',
......
...@@ -16,7 +16,7 @@ import { ConsoleLogger } from 'mol-util/console-logger' ...@@ -16,7 +16,7 @@ import { ConsoleLogger } from 'mol-util/console-logger'
import { State } from './state' import { State } from './state'
import { LimitsConfig, ServerConfig } from '../config'; import { LimitsConfig, ServerConfig } from '../config';
import { interpolate } from 'mol-util/string'; import { interpolate } from 'mol-util/string';
import { getSchema } from './web-schema'; import { getSchema, shortcutIconLink } from './web-schema';
import { swaggerUiIndexHandler, swaggerUiAssetsHandler } from 'servers/common/swagger-ui'; import { swaggerUiIndexHandler, swaggerUiAssetsHandler } from 'servers/common/swagger-ui';
export default function init(app: express.Express) { export default function init(app: express.Express) {
...@@ -42,7 +42,11 @@ export default function init(app: express.Express) { ...@@ -42,7 +42,11 @@ export default function init(app: express.Express) {
}); });
app.use(makePath(''), swaggerUiAssetsHandler()); app.use(makePath(''), swaggerUiAssetsHandler());
app.get(makePath(''), swaggerUiIndexHandler(makePath('openapi.json'), ServerConfig.apiPrefix)); app.get(makePath(''), swaggerUiIndexHandler({
openapiJsonUrl: makePath('openapi.json'),
apiPrefix: ServerConfig.apiPrefix,
shortcutIconLink
}));
} }
function getMapFileFn() { function getMapFileFn() {
......
...@@ -257,3 +257,5 @@ export function getSchema() { ...@@ -257,3 +257,5 @@ export function getSchema() {
} }
} }
} }
export const shortcutIconLink = `<link rel='shortcut icon' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURQAAAMIrHrspHr0oH7soILonHrwqH7onILsoHrsoH7soH7woILwpIKgVokoAAAAMdFJOUwAQHzNxWmBHS5XO6jdtAmoAAACZSURBVDjLxZNRCsQgDAVNXmwb9f7nXZEaLRgXloXOhwQdjMYYwpOLw55fBT46KhbOKhmRR2zLcFJQj8UR+HxFgArIF5BKJbEncC6NDEdI5SatBRSDJwGAoiFDONrEJXWYhGMIcRJGCrb1TOtDahfUuQXd10jkFYq0ViIrbUpNcVT6redeC1+b9tH2WLR93Sx2VCzkv/7NjfABxjQHksGB7lAAAAAASUVORK5CYII=' />`
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment